home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-2.iso / extra / helpful.zip / scsi < prev    next >
Text File  |  1995-08-21  |  109KB  |  3,608 lines

  1.   Linux SCSI HOWTO
  2.   Drew Eckhardt, drew@cs.colorado.edu
  3.   v2.15, 20 March 1995
  4.  
  5.   This HOWTO covers the Linux SCSI subsystem, as implemented in Linux
  6.   kernel revision 1.1.74 and newer alpha code.  Earlier revisions of the
  7.   SCSI code are unsupported, and may differ significantly in terms of
  8.   the drivers implemented, performance, and options available.
  9.  
  10.   1.  Introduction
  11.  
  12.   1.1.  License
  13.  
  14.   Noncommercial redistributions of a verbatim copy in any medium
  15.   physical or electronic are permitted without express permission of the
  16.   author.  Translations are similarly permitted without express
  17.   permission if they includes a notice on who translated it.
  18.  
  19.   Commercial redistribution is allowed and encouraged, provided that the
  20.   author is notified of any such distributions and given opportunity to
  21.   to provide a more up-to-date version.
  22.  
  23.   Short quotes may be used without prior consent by the author.
  24.   Derivative work and partial distributions of the SCSI-HOWTO must
  25.   include either a verbatim copy of this file or make a verbatim copy of
  26.   this file available. If the latter is the case, a pointer to the
  27.   verbatim copy must be stated at a clearly visible place.
  28.  
  29.   In short, we wish to promote dissemination of this information through
  30.   as many channels as possible. However, we do wish to retain copyright
  31.   on the HOWTO documents, to be notified of any plans to redistribute
  32.   the HOWTOs to insure that outdated versions don't spread too far, and
  33.   for ALL the information provided in the HOWTOS to be disseminated. If
  34.   you have questions on the Linux documentation project, please contact
  35.   Matt Welsh, the Linux HOWTO coordinator, at mdw@sunsite.unc.edu.
  36.   Questions regarding this document itself should be addressed to Drew
  37.   Eckhardt, drew@Colorado.EDU.
  38.  
  39.  
  40.   1.2.  Important Note
  41.  
  42.   IMPORTANT:
  43.  
  44.   BUG REPORTS WHICH FAIL TO FOLLOW THE PROCEDURE OUTLINED IN SECTION 2
  45.   WILL BE IGNORED.
  46.  
  47.   For additional information, you may wish to join the SCSI channel of
  48.   the Linux activists list - mail to linux-activists-
  49.   request@joker.cs.hut.fi.  with the line
  50.  
  51.  
  52.   X-Mn-Admin: join SCSI
  53.  
  54.  
  55.  
  56.   in the header, as well as the Linux SCSI list by mailing
  57.   majordomo@vger.rutgers.edu with the line
  58.  
  59.  
  60.   subscribe linux-scsi
  61.  
  62.  
  63.  
  64.   in the text.
  65.  
  66.  
  67.   I'm aware that this document isn't the most user-friendly, and that
  68.   there may be inaccuracies and oversights.  If you have constructive
  69.   comments on how to rectify the situation you're free to mail me about
  70.   it.
  71.  
  72.  
  73.  
  74.   2.  Common Problems
  75.  
  76.   This section lists some of the common problems that people have.  If
  77.   there is not anything here that answers your questions, you should
  78.   also consult the sections for your host adapter and the devices in
  79.   that are giving you problems.
  80.  
  81.  
  82.   2.1.  General Flakiness
  83.  
  84.   If you experience random errors, the most likely causes are cabling
  85.   and termination problems.
  86.  
  87.   Some products, such as those built arround the newer NCR chips,
  88.   feature digital filtering and active signal negation, and aren't very
  89.   sensitive to cabling problems.
  90.  
  91.   Others, such as the Adaptec 154xC, 154xCF, and 274x, are extremely
  92.   sensitive and may fail with cables that work with other systems.
  93.  
  94.   I reiterate: some host adapters are extremely sensitive to cabling and
  95.   termination problems and therefore, cabling and termination should be
  96.   the first things checked when there are problems.
  97.  
  98.   To minimize your problems, you should use cables which
  99.  
  100.  
  101.   1. Claim SCSI-II compliance
  102.  
  103.   2. Have a characteristic impedance of 132 ohms
  104.  
  105.   3. All come from the same source to avoid impedance mismatches
  106.  
  107.   4. Come from a reputable vendor such as Amphenol
  108.  
  109.   Termination power should be provided by all devices on the SCSI bus,
  110.   through a diode to prevent current backflow, so that sufficient power
  111.   is available at the ends of the cable where it is needed.  To prevent
  112.   damage if the bus is shorted, TERMPWR should be driven through a fuse
  113.   or other current limiting device.
  114.  
  115.   If multiple devices, external cables, or FAST SCSI 2 are used, active
  116.   or forced perfect termination should be used on both ends of the SCSI
  117.   bus.
  118.  
  119.   See the comp.periphs.scsi FAQ
  120.   <ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi> for more information about
  121.   active termination.
  122.  
  123.  
  124.   2.2.  The kernel command line
  125.  
  126.   Other parts of the documentation refer to a ``kernel command line''.
  127.  
  128.   The kernel command line is a set of options you may specify from
  129.   either the LILO: prompt after an image name, or in the append field in
  130.   your LILO configuration file (LILO .14 and newer use /etc/lilo.conf,
  131.   older versions use /etc/lilo/config).
  132.  
  133.   Boot your system with LILO, and hit one of the alt, control, or shift
  134.   keys when it first comes up to get a prompt.  LILO should respond with
  135.  
  136.  
  137.  
  138.        boot:
  139.  
  140.  
  141.  
  142.  
  143.   At this prompt, you can select a kernel image to boot, or list them
  144.   with ``?''.  Ie
  145.  
  146.  
  147.  
  148.        boot: ?
  149.  
  150.        ramdisk floppy harddisk
  151.  
  152.  
  153.  
  154.  
  155.   To boot that kernel with the command line options you have selected,
  156.   simply enter the name followed by a white space delimited list of
  157.   options, terminating with a return.
  158.  
  159.   Options take the form of
  160.  
  161.  
  162.   variable=valuelist
  163.  
  164.  
  165.  
  166.   Where valuelist may be a single value or comma delimited list of
  167.   values with no whitespace.  With the exception of root device,
  168.   individual values are numbers, and may be specified in either decimal
  169.   or hexadecimal.
  170.  
  171.   Ie, to boot linux with an Adaptec 1520 clone not recognized at bootup,
  172.   you might type
  173.  
  174.  
  175.  
  176.        boot: floppy aha152x=0x340,11,7,1
  177.  
  178.  
  179.  
  180.  
  181.   If you don't care to type all of this at boot time, it is also
  182.   possible to use the LILO configuration file ``append'' option with
  183.   LILO .13 and newer.
  184.  
  185.   Ie,
  186.  
  187.  
  188.        append="aha152x=0x340,11,7,1"
  189.  
  190.  
  191.  
  192.  
  193.  
  194.   2.3.  A SCSI device shows up at all possible IDs
  195.  
  196.   If this is the case, you have strapped the device at the same address
  197.   as the controller (typically 7, although some boards use other
  198.   addresses, with 6 being used by some Future Domain boards).
  199.   Please change the jumper settings.
  200.  
  201.  
  202.   2.4.  A SCSI device shows up at all possible LUNs
  203.  
  204.   The device has buggy firmware.
  205.  
  206.   As an interim solution, you should try using the kernel command line
  207.   option
  208.  
  209.  
  210.  
  211.        max_scsi_luns=1
  212.  
  213.  
  214.  
  215.  
  216.   If that works, there is a list of buggy devices in the kernel sources
  217.   in drivers/scsi/scsi.c in the variable blacklist.  Add your device to
  218.   this list and mail the patch to Linus.
  219.  
  220.  
  221.   2.5.  You get sense errors when you know the devices are error free
  222.  
  223.   Sometimes this is caused by bad cables or impropper termination.
  224.  
  225.   See ``'': General Flakiness
  226.  
  227.  
  228.   2.6.  A kernel configured with networking does not work.
  229.  
  230.   The auto-probe routines for many of the network drivers are not
  231.   passive, and will interfere with operation with some of the SCSI
  232.   drivers.
  233.  
  234.  
  235.   2.7.  Device detected, but unable to access.
  236.  
  237.   A SCSI device is detected by the kernel, but you are unable to access
  238.   it - ie mkfs /dev/sdc, tar xvf /dev/rst2, etc fails.
  239.  
  240.   You don't have a special file in /dev for the device.
  241.  
  242.   Unix devices are identified as either block or character (block
  243.   devices go through the buffer cache, character devices do not)
  244.   devices, a major number (ie which driver is used - block major 8
  245.   corresponds to SCSI disks) and a minor number (ie which unit is being
  246.   accessed through a given driver - ie character major 4, minor 0 is the
  247.   first virtual console, minor 1 the next, etc).  However, accessing
  248.   devices through this separate namespace would break the unix/Linux
  249.   metaphor of ``everything is a file,'' so character and block device
  250.   special files are created under /dev.  This lets you access the raw
  251.   third SCSI disk device as /dev/sdc, the first serial port as
  252.   /dev/ttyS0, etc.
  253.  
  254.   The preferred method for creating a file is using the MAKEDEV script:
  255.  
  256.  
  257.  
  258.        cd /dev
  259.  
  260.  
  261.  
  262.  
  263.   and run MAKEDEV (as root) for the devices you want to create - ie
  264.  
  265.   wildcards ``should'' work - ie
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.   ``should'' create entries for all SCSI disk devices (doing this should
  274.   create /dev/sda through /dev/sdp, with fifteen partition entries for
  275.   each)
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.   ``should'' create entries for /dev/sdc and all fifteen permissible
  284.   partitions on /dev/sdc, etc.
  285.  
  286.   I say ``should'' because this is the standard unix behavior - the
  287.   MAKEDEV script in your installation may not conform to this behavior,
  288.   or may have restricted the number of devices it will create.
  289.  
  290.   If MAKEDEV won't do the right magic for you, you'll have to create the
  291.   device entries by hand with the mknod command.
  292.  
  293.   The block/character type, major, and minor numbers are specified for
  294.   the various SCSI devices in Subsection 3: Device Files in the
  295.   appropriate section.
  296.  
  297.   Take those numbers, and use (as root)
  298.  
  299.  
  300.  
  301.        mknod /dev/device b|c major minor
  302.  
  303.  
  304.  
  305.  
  306.   ie -
  307.  
  308.  
  309.  
  310.        mknod /dev/sdc b 8 32
  311.        mknod /dev/rst0 c 9 0
  312.  
  313.  
  314.  
  315.  
  316.  
  317.   2.8.  SCSI System Lockups
  318.  
  319.   This could be one of a number of things.  Also see the section for
  320.   your specific host adapter for possible further solutions.
  321.  
  322.   There are cases where the lockups seem to occur when multiple devices
  323.   are in use at the same time.  In this case, you can try contacting the
  324.   manufacturer of the devices and see if firmware upgrades are available
  325.   which would correct the problem.  If possible, try a different scsi
  326.   cable, or try on another system.  This can also be caused by bad
  327.   blocks on disks, or by bad handling of DMA by the motherboard (for
  328.   host adapters that do DMA).  There are probably many other possible
  329.   conditions that could lead to this type of event.
  330.  
  331.   Sometimes these problems occur when there are multiple devices in use
  332.   on the bus at the same time.  In this case, if your host adapter
  333.   driver supports more than one outstanding command on the bus at one
  334.   time, try reducing this to 1 and see if this helps. If you have tape
  335.   drives or slow cdrom drives on the bus, this might not be a practical
  336.   solution.
  337.  
  338.  
  339.   2.9.  Configuring and building the kernel
  340.  
  341.   Unused SCSI drivers eat up valuable memory, aggravating memory
  342.   shortage problems on small systems because kernel memory is unpagable.
  343.  
  344.   So, you will want to build a kernel tuned for your system, with only
  345.   the drivers you need installed.
  346.  
  347.   cd to /usr/src/linux
  348.  
  349.   If you are using a root device other than the current one, or
  350.   something other than 80x25 VGA, and you are writing a boot floppy, you
  351.   should edit the makefile, and make sure the
  352.  
  353.  
  354.   ROOT_DEV =
  355.  
  356.  
  357.  
  358.   and
  359.  
  360.  
  361.   SVGA_MODE =
  362.  
  363.  
  364.  
  365.   lines are the way you want them.
  366.  
  367.   If you've installed any patches, you may wish to guarantee that all
  368.   files are rebuilt.  If this is the case, you should type
  369.  
  370.  
  371.  
  372.        make mrproper
  373.  
  374.  
  375.  
  376.  
  377.   Regardless of whether you ran make mrproper, type
  378.  
  379.  
  380.  
  381.        make config
  382.  
  383.  
  384.  
  385.  
  386.   and answer the configuration questions.  Then run
  387.  
  388.  
  389.  
  390.        make depend
  391.  
  392.  
  393.  
  394.  
  395.   and finally
  396.  
  397.        make
  398.  
  399.  
  400.  
  401.  
  402.   Once the build completes, you may wish to update the lilo
  403.   configuration, or write a boot floppy.  A boot floppy may be made by
  404.   running
  405.  
  406.  
  407.  
  408.        make zdisk
  409.  
  410.  
  411.  
  412.  
  413.  
  414.   2.10.  LUNS other than 0 don't work
  415.  
  416.   This is often a problem with SCSI-> MFM, RLL, ESDI, SMD, and similar
  417.   bridge boards.
  418.  
  419.   At some point, we came to the conclusion that many SCSI-I devices were
  420.   extremely broken, and added the following code
  421.  
  422.  
  423.   ______________________________________________________________________
  424.   /* Some scsi-1 peripherals do not handle lun != 0.
  425.      I am assuming that scsi-2 peripherals do better */
  426.   if((scsi_result[2] & 0x07) == 1 &&
  427.      (scsi_result[3] & 0x0f) == 0) break;
  428.   ______________________________________________________________________
  429.  
  430.  
  431.  
  432.   to scan_scsis() in drivers/scsi/scsi.c.  If you delete this code, your
  433.   old devices should be detected correctly if you have not used the
  434.   max_scsi_luns kernel command line option, or the NO_MULTI_LUN compile
  435.   time define.
  436.  
  437.  
  438.  
  439.   3.  Reporting Bugs
  440.  
  441.   The Linux SCSI developers don't necessarily maintain old revisions of
  442.   the code due to space constraints.  So, if you are not running the
  443.   latest publically released Linux kernel (note that many of the Linux
  444.   distributions, such as MCC, SLS, Yggdrasil, etc. often lag one or even
  445.   twenty patches behind this) chances are we will be unable to solve
  446.   your problem.  So, before reporting a bug, please check to see if it
  447.   exists with the latest publically available kernel.
  448.  
  449.   If after upgrading, and reading this document thoroughly, you still
  450.   believe that you have a bug, please mail a bug report to the SCSI
  451.   channel of the mailing list where it will be seen by many of the
  452.   people who've contributed to the Linux SCSI drivers.
  453.  
  454.   In your bug report, please provide as much information as possible
  455.   regarding your hardware configuration, the exact text of all of the
  456.   messages that Linux prints when it boots, when the error condition
  457.   occurs, and where in the source code the error is.  Use the procedures
  458.   outlined in Section 2.1 : Capturing messages and Section 2.2 :
  459.   Locating the source of a panic().
  460.  
  461.   Failure to provide the maximum possible amount of information may
  462.   result in misdiagnosis of your problem, or developers deciding that
  463.   there are other more interesting problems to fix.
  464.  
  465.   The bottom line is that if we can't reproduce your bug, and you can't
  466.   point at us what's broken, it won't get fixed.
  467.  
  468.  
  469.   3.1.  Capturing messages
  470.  
  471.   If you are not running a kernel message logging system :
  472.  
  473.   Insure that the /proc filesystem is mounted.
  474.  
  475.  
  476.  
  477.        grep proc /etc/mtab
  478.  
  479.  
  480.  
  481.  
  482.   If the /proc filesystem is not mounted, mount it
  483.  
  484.  
  485.  
  486.        mkdir /proc
  487.        chmod 755 /proc
  488.        mount -t proc /proc /proc
  489.  
  490.  
  491.  
  492.  
  493.   Copy the kernel revision and messages into a log file
  494.  
  495.  
  496.  
  497.        cat /proc/version >/tmp/log
  498.        cat /proc/kmsg >>/tmp/log
  499.  
  500.  
  501.  
  502.  
  503.   Type Ctrl-C after a second or two.
  504.  
  505.   If you are running some logger, you'll have to poke through the
  506.   appropriate log files (/etc/syslog.conf should be of some use in
  507.   locating them), or use dmesg.
  508.  
  509.   If Linux is not yet bootstrapped, format a floppy diskette under DOS.
  510.   Note that if you have a distribution which mounts the root diskette
  511.   off of floppy rather than RAM drive, you'll have to format a diskette
  512.   readable in the drive not being used to mount root or use their
  513.   ramdisk boot option.
  514.  
  515.   Boot Linux off your distribution boot floppy, preferably in single
  516.   user mode using a RAM disk as root.
  517.  
  518.  
  519.  
  520.        mkdir /tmp/dos
  521.  
  522.  
  523.  
  524.  
  525.   Insert the diskette in a drive not being used to mount root, and mount
  526.   it.  Ie
  527.  
  528.  
  529.        mount -t msdos /dev/fd0 /tmp/dos
  530.  
  531.  
  532.  
  533.  
  534.   or
  535.  
  536.  
  537.  
  538.        mount -t msdos /dev/fd1 /tmp/dos
  539.  
  540.  
  541.  
  542.  
  543.   Copy your log to it
  544.  
  545.  
  546.  
  547.        cp /tmp/log /tmp/dos/log
  548.  
  549.  
  550.  
  551.  
  552.   Unmount the DOS floppy
  553.  
  554.  
  555.  
  556.        umount /tmp/dos
  557.  
  558.  
  559.  
  560.  
  561.   And shutdown Linux
  562.  
  563.  
  564.  
  565.        shutdown
  566.  
  567.  
  568.  
  569.  
  570.   Reboot into DOS, and using your favorite communications software
  571.   include the log file in your trouble mail.
  572.  
  573.  
  574.   3.2.  Locating the source of a panic()
  575.  
  576.   Like other unices, when a fatal error is encountered, Linux calls the
  577.   kernel panic() function.  Unlike other unices, Linux doesn't dump core
  578.   to the swap or dump device and reboot automatically.  Instead, a
  579.   useful summary of state information is printed for the user to
  580.   manually copy down.  Ie :
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.   Unable to handle kernel NULL pointer dereference at virtual address c0000004
  596.   current->tss,cr3 = 00101000, %cr3 = 00101000
  597.   *pde = 00102027
  598.   *pte = 00000027
  599.   Oops: 0000
  600.   EIP:    0010:0019c905
  601.   EFLAGS: 00010002
  602.   eax: 0000000a   ebx: 001cd0e8   ecx: 00000006   edx: 000003d5
  603.   esi: 001cd0a8   edi: 00000000   ebp: 00000000   esp: 001a18c0
  604.   ds: 0018   es: 0018   fs: 002b   gs: 002b   ss: 0018
  605.   Process swapper (pid: 0, process nr: 0, stackpage=001a09c8)
  606.   Stack: 0019c5c6 00000000 0019c5b2 00000000 0019c5a5 001cd0a8 00000002 00000000
  607.   001cd0e8 001cd0a8 00000000 001cdb38 001cdb00 00000000 001ce284 0019d001
  608.   001cd004 0000e800 fbfff000 0019d051 001cd0a8 00000000 001a29f4 00800000
  609.   Call Trace: 0019c5c6 0019c5b2 0018c5a5 0019d001 0019d051 00111508 00111502
  610.   0011e800 0011154d 00110f63 0010e2b3 0010ef55 0010ddb7
  611.   Code: 8b 57 04 52 68 d2 c5 19 00 e8 cd a0 f7 ff 83 c4 20 8b 4f 04
  612.   Aiee, killing interrupt handler
  613.   kfree of non-kmalloced memory: 001a29c0, next= 00000000, order=0
  614.   task[0] (swapper) killed: unable to recover
  615.   Kernel panic: Trying to free up swapper memory space
  616.   In swapper task - not syncing
  617.  
  618.  
  619.  
  620.  
  621.   Take the hexidecimal number on the EIP: line, in this case 19c905, and
  622.   search through /usr/src/linux/zSystem.map for the highest number not
  623.   larger than that address.  Ie,
  624.  
  625.  
  626.  
  627.        0019a000 T _fix_pointers
  628.        0019c700 t _intr_scsi
  629.        0019d000 t _NCR53c7x0_intr
  630.  
  631.  
  632.  
  633.  
  634.   That tells you what function its in.  Recompile the source file which
  635.   defines that function file with debugging enabled, or the whole kernel
  636.   if you prefer by editing /usr/src/linux/Makefile and adding a ``-g''
  637.   to the CFLAGS definition.
  638.  
  639.  
  640.  
  641.        ##standard CFLAGS
  642.        #
  643.  
  644.  
  645.  
  646.  
  647.   Ie,
  648.  
  649.  
  650.  
  651.        CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
  652.  
  653.  
  654.  
  655.  
  656.   becomes
  657.  
  658.  
  659.  
  660.  
  661.   CFLAGS = -g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
  662.  
  663.  
  664.  
  665.  
  666.   Rebuild the kernel, incrementally or by doing a
  667.  
  668.  
  669.  
  670.        make clean
  671.        make
  672.  
  673.  
  674.  
  675.  
  676.   Make the kernel bootable by creating an entry in your /etc/lilo.conf
  677.   for it
  678.  
  679.  
  680.  
  681.        image = /usr/src/linux/zImage
  682.        label = experimental
  683.  
  684.  
  685.  
  686.  
  687.   and re-running LILO as root, or by creating a boot floppy
  688.  
  689.  
  690.  
  691.        make zImage
  692.  
  693.  
  694.  
  695.  
  696.   Reboot and record the new EIP for the error.
  697.  
  698.   If you have script installed, you may want to start it, as it will log
  699.   your debugging session to the typescript file.
  700.  
  701.   Now, run
  702.  
  703.  
  704.  
  705.        gdb /usr/src/linux/tools/zSystem
  706.  
  707.  
  708.  
  709.  
  710.   and enter
  711.  
  712.  
  713.  
  714.        info line *<your EIP>
  715.  
  716.  
  717.  
  718.  
  719.   Ie,
  720.  
  721.  
  722.        info line *0x19c905
  723.  
  724.  
  725.  
  726.  
  727.   To which GDB will respond something like
  728.  
  729.  
  730.  
  731.        (gdb) info line *0x19c905
  732.        Line 2855 of ``53c7,8xx.c'' starts at address 0x19c905 <intr_scsi+641>and ends
  733.        at 0x19c913 <intr_scsi+655>.
  734.  
  735.  
  736.  
  737.  
  738.   Record this information.  Then, enter list < line number>
  739.  
  740.   Ie,
  741.  
  742.  
  743.   ______________________________________________________________________
  744.   (gdb) list 2855
  745.   2850    /*      printk("scsi%d : target %d lun %d unexpected disconnect\n",
  746.   2851                host->host_no, cmd->cmd->target, cmd->cmd->lun); */
  747.   2852            printk("host : 0x%x\n", (unsigned) host);
  748.   2853            printk("host->host_no : %d\n", host->host_no);
  749.   2854            printk("cmd : 0x%x\n", (unsigned) cmd);
  750.   2855            printk("cmd->cmd : 0x%x\n", (unsigned) cmd->cmd);
  751.   2856            printk("cmd->cmd->target : %d\n", cmd->cmd->target);
  752.   2857            if (cmd) {
  753.   2858                abnormal_finished(cmd, DID_ERROR << 16);
  754.   2859            }
  755.   2860            hostdata->dsp = hostdata->script + hostdata->E_schedule /
  756.   2861                sizeof(long);
  757.   2862            hostdata->dsp_changed = 1;
  758.   2863        /* SCSI PARITY error */
  759.   2864        }
  760.   2865
  761.   2866        if (sstat0_sist0 & SSTAT0_PAR) {
  762.   2867            fatal = 1;
  763.   2868            if (cmd && cmd->cmd) {
  764.   2869                printk("scsi%d : target %d lun %d parity error.\n",
  765.   ______________________________________________________________________
  766.  
  767.  
  768.  
  769.   Obviously, quit will take you out of GDB.
  770.  
  771.   Record this information too, as it will provide a context incase the
  772.   developers' kernels differ from yours.
  773.  
  774.  
  775.   4.  Hosts
  776.  
  777.  
  778.   This section gives specific information about the various host
  779.   adapters that are supported in some way or another under linux.
  780.  
  781.  
  782.   4.1.  Supported and Unsupported Hardware
  783.  
  784.   Drivers in the distribution kernel :
  785.  
  786.   Adaptec 152x, Adaptec 154x (including clones from Bustek and DTC 329x
  787.   boards), Adaptec 174x, Adaptec 274x/284x/2940, EATA-DMA protocol
  788.   compilant boards (all DPT PMXXXXX/XX and SKXXXXX/XX except the PM2001,
  789.   some boards from NEC and ATT), Future Domain 850, 885, 950, and other
  790.   boards in that series (but not the 840, 841, 880, and 881 boards
  791.   unless you make the appropriate patch), Future Domain 16x0 with
  792.   TMC-1800, TMC-18C30, or TMC-18C50 chips, NCR53c8xx,PAS16 SCSI ports,
  793.   Seagate ST0x, Trantor T128/T130/T228 boards, Ultrastor 14F, 24F, and
  794.   34F, and Western Digital 7000.
  795.  
  796.   Alpha drivers: Richoh GSI-8
  797.  
  798.   Many of the ALPHA drivers are available via anonymous FTP from
  799.   <ftp://tsx-11.mit.edu:/pub/linux/ALPHA/scsi>
  800.  
  801.   Drivers that are being developed, but aren't publically available yet,
  802.   and modifications needed to make existing drivers compatable with
  803.   other boards: DPT PM2001
  804.  
  805.   Announcements WILL be made when drivers are available for public alpha
  806.   testing.  Until then, please don't use up the developers' valuable
  807.   time with mail asking for release dates, etc.
  808.  
  809.  
  810.   o  NCR53c8x0/7x0
  811.  
  812.   o  A NCR53c8xx driver has been developed, and with modifications
  813.      ranging from minor to severe should support these chips
  814.  
  815.   o  NCR53c720 - detection changes, initializaion changes, modification
  816.      of the assembler to use the 720's register mapping
  817.  
  818.   o  NCR53c710 - detection changes, initialization changes, modification
  819.      of assembler, modification of the NCR code to use fatal interrupts
  820.      or GPIO generated non fatal interrupts for command completion.
  821.  
  822.   o  NCR53c700, NCR53c700-66 - detection changes, initialization
  823.      changes, modification of NCR code to not use DSA, modification of
  824.      Linux code to handle context switches.
  825.  
  826.   o  NCR53c9x family
  827.  
  828.   o  Qlogic
  829.  
  830.   SCSI hosts that will not work :
  831.  
  832.   o  All parallel-> SCSI adapters
  833.  
  834.   o  Rancho SCSI boards
  835.  
  836.   o  and Grass Roots SCSI boards.
  837.  
  838.   SCSI hosts that will NEVER work:
  839.  
  840.  
  841.   o  Non Adaptec compatable DTC boards (including the 3270 and 3280).
  842.  
  843.      Aquiring programming information requires a non-disclosure
  844.      agreement with DTC.  This means that it would be impossible to
  845.      distribute a Linux driver if one were written, since complying with
  846.      the NDA would mean distributing no source, in violation of the GPL,
  847.      and complying with the GPL would mean distributing source, in
  848.      violation of the NDA.
  849.  
  850.   If you want to run Linux on an unsupported piece of hardware, your
  851.   options are to either write a driver yourself (Eric Youngdale and I
  852.   are usually willing to answer technical questions concerning the Linux
  853.   SCSI drivers) or to commision a driver.
  854.  
  855.  
  856.  
  857.  
  858.  
  859.   4.1.1.  Multiple host adapters
  860.  
  861.   With some host adapters (see ``'': Buyers' Guide : Feature
  862.   Comparison), you can use multiple host adapters of the same type in
  863.   the same system.  With multiple adapters of the same type in the same
  864.   system, generally the one at the lowest address will be scsi0, the one
  865.   at the next address scsi1, etc.
  866.  
  867.   In all cases, it is possible to use multiple host adapters of
  868.   different types, provided that none of their addresses conflict.  SCSI
  869.   controllers are scanned in the order specified in the
  870.   builtin_scsi_hosts[ ]array in drivers/scsi/hosts.c, with the order
  871.   currently being
  872.  
  873.  
  874.   1. Ultrastor
  875.  
  876.   2. Adaptec 151x/152x
  877.  
  878.   3. Buslogic
  879.  
  880.   4. Adaptec 154x
  881.  
  882.   5. Adaptec 174x
  883.  
  884.   6. Future Domain 16x0
  885.  
  886.   7. Always IN2000
  887.  
  888.   8. Generic NCR5380
  889.  
  890.   9. PAS16
  891.  
  892.   10.
  893.      Seagate
  894.  
  895.   11.
  896.      Trantor T128/T130
  897.  
  898.   12.
  899.      NCR53c8xx
  900.  
  901.   13.
  902.      EATA-DMA
  903.  
  904.   14.
  905.      WD7000
  906.  
  907.   15.
  908.      debugging driver.
  909.  
  910.   In most cases (ie, you aren't trying to use both Buslogic and Adaptec
  911.   drivers), this can be changed to suit your needs (ie, keeping the same
  912.   devices when new SCSI devices are added to the system on a new
  913.   controller) by moving the individual entries.
  914.  
  915.  
  916.   4.2.  Common Problems
  917.  
  918.  
  919.   4.2.1.  SCSI timeouts
  920.  
  921.   Make sure interrupts are enabled correctly, and there are no IRQ, DMA,
  922.   or address conflicts with other boards.
  923.  
  924.  
  925.   4.2.2.  Failure of autoprobe routines on boards that rely on
  926.  
  927.   BIOS for autoprobe.
  928.  
  929.   If your SCSI adapter is one of the following :
  930.  
  931.  
  932.   o  Adaptec 152x
  933.  
  934.   o  Adaptec 151x
  935.  
  936.   o  Adaptec AIC-6260
  937.  
  938.   o  Adaptec AIC-6360
  939.  
  940.   o  Future Domain 1680
  941.  
  942.   o  Future Domain TMC-950
  943.  
  944.   o  Future Domain TMC-8xx
  945.  
  946.   o  Trantor T128
  947.  
  948.   o  Trantor T128F
  949.  
  950.   o  Trantor T228F
  951.  
  952.   o  Seagate ST01
  953.  
  954.   o  Seagate ST02
  955.  
  956.   o  Western Digital 7000
  957.  
  958.   and it is not detected on bootup, ie you get a
  959.  
  960.  
  961.  
  962.        scsi : 0 hosts
  963.  
  964.  
  965.  
  966.  
  967.   message or a
  968.  
  969.  
  970.  
  971.        scsi%d : type
  972.  
  973.  
  974.  
  975.  
  976.   message is not printed for each supported SCSI adapter installed in
  977.   the system, you may have a problem with the autoprobe routine not
  978.   knowing about your board.
  979.  
  980.   Autodetection will fail for drivers using the BIOS for autodetection
  981.   if the BIOS is disabled.  Double check that your BIOS is enabled, and
  982.   not conflicting with any other peripherial BIOSes.
  983.  
  984.   Autodetection will also fail if the board's ``signature'' and/or BIOS
  985.   address don't match known ones.
  986.  
  987.   If the BIOS is installed, please use DOS and DEBUG to find a signature
  988.   that will detect your board -
  989.  
  990.  
  991.   Ie, if your board lives at 0xc8000, under DOS do
  992.  
  993.  
  994.  
  995.        debug
  996.        d c800:0
  997.        q
  998.  
  999.  
  1000.  
  1001.  
  1002.   and send a message to the SCSI channel of the mailing list with the
  1003.   ASCII message, with the length and offset from the base address (ie,
  1004.   0xc8000).  Note that the exact text is required, and you should
  1005.   provide both the hex and ASCII portions of the text.
  1006.  
  1007.   If no BIOS is installed, and you are using an Adaptec 152x, Trantor
  1008.   T128, or Seagate driver, you can use command line or compile time
  1009.   overrides to force detection.
  1010.  
  1011.   Please consult the appropriate subsection for your SCSI board as well
  1012.   as ``''.
  1013.  
  1014.  
  1015.   4.2.3.  Failure of boards using memory mapped I/O
  1016.  
  1017.   (This include the Trantor T128 and Seagate boards, but not the
  1018.   Adaptec, Generic NCR5380, PAS16, and Ultrastor drivers)
  1019.  
  1020.   This is often caused when the memory mapped I/O ports are incorrectly
  1021.   cached.  You should have the board's address space marked as
  1022.   uncachable in the XCMOS settings.
  1023.  
  1024.   If this is not possible, you will have to disable cache entirely.
  1025.  
  1026.   If you have manually specified the address of the board, remember that
  1027.   Linux needs the actual address of the board, and not the 16 byte
  1028.   segment the documentation may refer to.  Ie, 0xc8000 would be correct,
  1029.   0xc800 would not work and could cause memory corruption.
  1030.  
  1031.  
  1032.   4.2.4.  ``kernel panic : cannot mount root device'' when booting
  1033.  
  1034.   an ALPHA driver boot floppy
  1035.  
  1036.   You'll need to edit the binary image of the kernel (before or after
  1037.   writing it out to disk), and modify a few two byte fields (little
  1038.   endian) to gurantee that it will work on your system.
  1039.  
  1040.  
  1041.   1. default swap device at offset 502, this should be set to 0x00 0x00
  1042.  
  1043.   2. ram disk size at offset 504, this should be set to the size of the
  1044.      boot floppy in K - ie, 5.25" = 1200, 3.5" = 1440.
  1045.  
  1046.      This means the bytes are
  1047.  
  1048.  
  1049.  
  1050.        3.5" : 0xA0 0x05
  1051.        5.25" : 0xB0  0x04
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.   3. root device offset at 508, this should be 0x00 0x00, ie the boot
  1058.      device.
  1059.  
  1060.   dd or rawrite the file to a disk.  Insert the disk in the first floppy
  1061.   drive, wait until it prompts you to insert the root disk, and insert
  1062.   the root floppy from your distribution.
  1063.  
  1064.  
  1065.   4.2.5.  Installing a device driver not included with the distribution
  1066.   kernel
  1067.  
  1068.   You need to start with the version of the kernel used by the driver
  1069.   author.  This revision may be alluded to in the documentation included
  1070.   with the driver.
  1071.  
  1072.   Various recent kernel revisions can be found at
  1073.   <ftp://nic.funet.fi/pub/OS/Linux/PEOPLE/Linus>
  1074.  
  1075.   as linux-version.tar.gz
  1076.  
  1077.   They are also mirrored at tsx-11.mit.edu and various other sites.
  1078.  
  1079.   cd to /usr/src.
  1080.  
  1081.   Remove your old Linux sources, if you want to keep a backup copy of
  1082.   them
  1083.  
  1084.  
  1085.  
  1086.        mv linux linux-old
  1087.  
  1088.  
  1089.  
  1090.  
  1091.   Untar the archive
  1092.  
  1093.  
  1094.  
  1095.        gunzip <linux-0.99.12.tar.gz | tar xvfp -
  1096.  
  1097.  
  1098.  
  1099.  
  1100.   Apply the patches.  The patches will be relative to some directory in
  1101.   the filesystem.  By examining the output file lines in the patch file
  1102.   (grep for ^---), you can tell where this is - ie patches with these
  1103.   lines
  1104.  
  1105.  
  1106.  
  1107.        --- ./kernel/blk_drv/scsi/Makefile
  1108.  
  1109.        --- ./config.in Wed Sep  1 16:19:33 1993
  1110.  
  1111.  
  1112.  
  1113.  
  1114.   would have the files relative to /usr/src/linux.
  1115.  
  1116.   Untar the driver sources at an appropriate place - you can type
  1117.  
  1118.  
  1119.  
  1120.        tar tfv patches.tar
  1121.  
  1122.  
  1123.   to get a listing, and move files as necessary (The SCSI driver files
  1124.   should live in /usr/src/linux/kernel/drivers/scsi).
  1125.  
  1126.   Either cd to the directory they are relative to and type
  1127.  
  1128.  
  1129.  
  1130.        patch -p0 <patch_file
  1131.  
  1132.  
  1133.  
  1134.  
  1135.   or tell patch to strip off leading path components.  Ie, if the files
  1136.   started with
  1137.  
  1138.  
  1139.  
  1140.        --- linux-new/kernel/blk_drv/scsi/Makefile
  1141.  
  1142.  
  1143.  
  1144.  
  1145.   and you wanted to apply them while in /usr/src/linux, you could cd to
  1146.   /usr/src/linux and type
  1147.  
  1148.  
  1149.  
  1150.        patch -p1 < patches
  1151.  
  1152.  
  1153.  
  1154.  
  1155.   to strip off the ``linux-new'' component.
  1156.  
  1157.   After you have applied the patches, look for any patch rejects, which
  1158.   will be the name of the rejected file with a # suffix appended.
  1159.  
  1160.  
  1161.  
  1162.        find /usr/src/linux/ -name ``*#'' -print
  1163.  
  1164.  
  1165.  
  1166.  
  1167.   If any of these exist, look at them.  In some cases, the differences
  1168.   will be in RCS identifiers and will be harmless, in other cases,
  1169.   you'll have to manually apply important parts.  Documentation on diffs
  1170.   files and patch is beyond the scope of this document.
  1171.  
  1172.   See also ``'': Configuring and building the kernel
  1173.  
  1174.  
  1175.   4.2.6.  Installing a driver that has no patches
  1176.  
  1177.  
  1178.   In some cases, a driver author may not offer patches with the .c and
  1179.   .h files which comprise his driver, or the patches may be against an
  1180.   older revision of the kernel and not go in cleanly.
  1181.  
  1182.  
  1183.   1. Copy the .c and .h files into /usr/src/linux/drivers/scsi
  1184.  
  1185.   2. Add the configuration option
  1186.  
  1187.      Edit /usr/src/linux/config.in, and add a line in the
  1188.  
  1189.        * SCSI low-level drivers
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.   section, add a boolean configuration variable for your driver.  Ie,
  1196.  
  1197.  
  1198.  
  1199.        bool 'Always IN2000 SCSI support' CONFIG_SCSI_IN2000 y
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.   3. Add the makefile entries
  1206.  
  1207.      Edit /usr/src/linux/drivers/scsi/Makefile, and add an entry like
  1208.  
  1209.  
  1210.      ___________________________________________________________________
  1211.      ifdef CONFIG_SCSI_IN2000
  1212.      SCSI_OBS := $(SCSI_OBJS) in2000.o
  1213.      SCSI_SRCS := $(SCSI_SRCS) in2000.c
  1214.      endif
  1215.      ___________________________________________________________________
  1216.  
  1217.  
  1218.  
  1219.   before the
  1220.  
  1221.  
  1222.   ______________________________________________________________________
  1223.   scsi.a: $(SCSI_OBJS)
  1224.   ______________________________________________________________________
  1225.  
  1226.  
  1227.  
  1228.   line in the makefile, where the .c file is the .c file you copied in,
  1229.   and the .o file is the basename of the .c file with a .o suffixed.
  1230.  
  1231.   4. Add the entry points
  1232.  
  1233.      Edit /usr/src/linux/drivers/scsi/hosts.c, and add a #include for
  1234.      the header file, conditional on the CONFIG_SCSI preprocessor define
  1235.      you added to the configuration file.  Ie, after
  1236.  
  1237.  
  1238.      ___________________________________________________________________
  1239.      #ifdef CONFIG_SCSI_GENERIC_NCR5380
  1240.      #include ``g_NCR5380.h''
  1241.      #endif
  1242.      ___________________________________________________________________
  1243.  
  1244.  
  1245.  
  1246.   you might add
  1247.  
  1248.  
  1249.   ______________________________________________________________________
  1250.   #ifdef CONFIG_SCSI_IN2000
  1251.   #include ``in2000.h''
  1252.   #endif
  1253.   ______________________________________________________________________
  1254.  
  1255.   You will also need to add the Scsi_Host_Template entry into the
  1256.   scsi_hosts[ ] array.  Take a look into the .h file, and you should
  1257.   find a # define that looks something like this :
  1258.  
  1259.  
  1260.   ______________________________________________________________________
  1261.   #define IN2000 {``Always IN2000'', in2000_detect, \
  1262.   in2000_info, in2000_command,    \
  1263.   in2000_queuecommand,            \
  1264.   in2000_abort,                   \
  1265.   in2000_reset,                   \
  1266.   NULL,                           \
  1267.   in2000_biosparam,               \
  1268.   1, 7, IN2000_SG, 1, 0, 0}
  1269.   ______________________________________________________________________
  1270.  
  1271.  
  1272.  
  1273.   the name of the preprocessor define, and add it into the scsi_hosts[ ]
  1274.   array, conditional on definition of the preprocessor symbol you used
  1275.   in the configuration file.
  1276.  
  1277.   Ie, after
  1278.  
  1279.  
  1280.   ______________________________________________________________________
  1281.   #ifdef CONFIG_SCSI_GENERIC_NCR5380
  1282.   GENERIC_NCR5380,
  1283.   #endif
  1284.   ______________________________________________________________________
  1285.  
  1286.  
  1287.  
  1288.   you might add
  1289.  
  1290.  
  1291.   ______________________________________________________________________
  1292.   #ifdef CONFIG_SCSI_IN2000
  1293.   IN2000,
  1294.   #endif
  1295.   ______________________________________________________________________
  1296.  
  1297.  
  1298.  
  1299.   See also ``'': Configuring and building the kernel
  1300.  
  1301.  
  1302.   4.3.  AIC 6260/6360 based products (Standard) Adaptec 152x, 151x,
  1303.   Sound Blaster 16 SCSI, SCSI Pro, Gigabyte, and other
  1304.  
  1305.  
  1306.  
  1307.   4.3.1.  Supported Configurations :
  1308.  
  1309.  
  1310.      BIOS addresses:
  1311.         0xd8000, 0xdc000, 0xd0000, 0xd4000, 0xc8000, 0xcc000, 0xe0 000,
  1312.         0xe4000.
  1313.  
  1314.  
  1315.      Ports:
  1316.         0x140, 0x340
  1317.  
  1318.  
  1319.      IRQs:
  1320.         9, 10, 11, 12
  1321.      DMA:
  1322.         is not used.
  1323.  
  1324.      IO:
  1325.         port mapped
  1326.  
  1327.  
  1328.      Autoprobe:
  1329.         Works with many boards with an installed BIOS.  All other board
  1330.         s, including the Adaptec 1510, and Sound Blaster16 SCSI must use
  1331.         a kernel comma nd line or compile time override.
  1332.  
  1333.  
  1334.      Autoprobe Override:
  1335.         None
  1336.  
  1337.      Compile time:
  1338.         Define PORTBASE, IRQ, SCSI_ID, RECONNECT as appropriate, see
  1339.         Defines
  1340.  
  1341.  
  1342.      kernel command line
  1343.         aha152x=< PORTBASE> ,< IRQ> ,< SCSI-ID> , < RECONNECT>
  1344.         Usually, SCSI-ID will be 7 and RECONNECT non-zero. To force d
  1345.         etection at 0x340, IRQ 11, at SCSI-ID 7, allowing
  1346.         disconnect/reconnect, you wou ld use the following command line
  1347.         option :
  1348.  
  1349.  
  1350.  
  1351.           aha152x=0x340,11,7,1
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.      Antiquity Problems, fix by upgrading:
  1358.         The driver fails with VLB boards.  There was a timing problem in
  1359.         kernels older than revision 1.0.5.
  1360.  
  1361.  
  1362.         Defines:
  1363.  
  1364.            AUTOCONF:
  1365.               use configuration the controller reports (only 152x)
  1366.  
  1367.            IRQ:
  1368.               override interrupt channel (9,10,11 or 12) (default 11)
  1369.  
  1370.            SCSI_ID:
  1371.               override scsiid of AIC-6260 (0-7) (default 7)
  1372.  
  1373.            RECONNECT:
  1374.               override target dis-/reconnection/multiple
  1375.  
  1376.            outstanding command:
  1377.               set to non-zero to enable, zero to disable.
  1378.  
  1379.            DONT_SNARF:
  1380.               Don't register ports (pl12 and below)
  1381.  
  1382.            SKIP_BIOSTEST:
  1383.               Don't test for BIOS signature (AHA-1510 or disabled BIOS)
  1384.  
  1385.            PORTBASE:
  1386.               Force port base. Don't try to probe
  1387.   4.4.  Adaptec 154x, AMI FastDisk VLB, Buslogic, DTC 329x (Standard)
  1388.  
  1389.  
  1390.  
  1391.      Supported Configurations:
  1392.  
  1393.         Ports:
  1394.            0x330 and 0x334
  1395.  
  1396.         IRQs:
  1397.            9, 10, 11, 12, 14, 15
  1398.  
  1399.         DMA channels:
  1400.            5, 6, 7
  1401.  
  1402.         IO:
  1403.            port mapped, bus master
  1404.  
  1405.      Autoprobe:
  1406.         works with all supported configurations, does not require an
  1407.         installed BIOS.
  1408.  
  1409.  
  1410.  
  1411.      Autoprobe override:
  1412.         none
  1413.  
  1414.  
  1415.      Note:
  1416.         No suffix boards, and early 'A' suffix boards do not support
  1417.         scatter/gather, and thus don't work.  However, they can be made
  1418.         to work for some definition of the word works if AHA1542_SCATTER
  1419.         is changed to 0 in drivers/scsi/aha1542.h.
  1420.  
  1421.  
  1422.      Note:
  1423.         Buslogic makes a series of boards that are software compatible
  1424.         with the Adaptec 1542, and these come in ISA, VLB and EISA
  1425.         flavors.
  1426.  
  1427.  
  1428.      Antiquity Problems, fix by upgrading:
  1429.  
  1430.         1. Linux kernel revisions prior to .99.10 don't support the 'C'
  1431.            revision.
  1432.  
  1433.         2. Linux kernel revisions prior to .99.14k don't support the 'C'
  1434.            revision options for
  1435.  
  1436.         o  BIOS support for the extended mapping for disks > 1G
  1437.  
  1438.         o  BIOS support for > 2 drives
  1439.  
  1440.         o  BIOS support for autoscanning the SCSI bus
  1441.  
  1442.  
  1443.         3. Linux kernel revisions prior to .99.15e don't support the 'C'
  1444.            with the BIOS support for > 2 drives turned on and the BIOS
  1445.            support for the extended mapping for disks > 1G turned off.
  1446.  
  1447.         4. Linux kernel revisions prior to .99.14u don't support the
  1448.            'CF' revisions of the board.
  1449.  
  1450.         5. Linux kernel revisions prior to 1.0.5 have a race condition
  1451.            when multiple devices are accessed at the same time.
  1452.  
  1453.      Common problems:
  1454.  
  1455.         1. There are unexpected errors with a 154xC or 154xCF board,
  1456.  
  1457.            Early examples of the 154xC boards have a high slew rate on
  1458.            one of the SCSI signals, which results in signal reflections
  1459.            when cables with the wrong impedance are used.
  1460.  
  1461.            Newer boards aren't much better, and also suffer from extreme
  1462.            cabling and termination sensitivity.
  1463.  
  1464.            See also Common Problems # 2 and # 3 and Section ``'': Common
  1465.            Problems, and Section ``'': General Flakiness
  1466.  
  1467.         2. There are unexpected errors with a 154xC or 154x with both
  1468.            internal and external devices connected.
  1469.  
  1470.            This is probably a termination problem.  In order to use the
  1471.            software option to disable host adapter termination, you must
  1472.            turn switch 1 off.
  1473.  
  1474.  
  1475.            See also Common Problems # 2 and # 3 and Section ``'': Common
  1476.            Problems, and Section ``'': General Flakiness
  1477.  
  1478.         3. The SCSI subsystem locks up completely.
  1479.  
  1480.            There are cases where the lockups seem to occur when multiple
  1481.            devices are in use at the same time.  In this case, you can
  1482.            try contacting the manufacturer of the devices and see if
  1483.            firmware upgrades are available which would correct the
  1484.            problem.  As a last resort, you can go into aha1542.h and
  1485.            change AHA1542_MAILBOX to 1.  This will effectively limit you
  1486.            to one outstanding command on the scsi bus at one time, and
  1487.            may help the situation.  If you have tape drives or slow
  1488.            cdrom drives on the bus, this might not be a practical
  1489.            solution.
  1490.  
  1491.  
  1492.            See also Common Problems # 2 and # 3 and Section ``'': Common
  1493.            Problems, Section ``'': General Flakiness and Section
  1494.            ``'':SCSI Lockups.
  1495.  
  1496.  
  1497.         4. An ``Interrupt received, but no mail'' message is printed on
  1498.            bootup and your SCSI devices are not detected.
  1499.  
  1500.            Disable the BIOS options to support the extended mapping for
  1501.            disks > 1G, support for > 2 drives, and for autoscanning the
  1502.            bus.  Or, upgrade to Linux .99.14k or newer.
  1503.  
  1504.   4.5.  Adaptec 174x
  1505.  
  1506.  
  1507.      Supported Configurations:
  1508.  
  1509.         Slots:
  1510.            1-8
  1511.  
  1512.         Ports:
  1513.            EISA board, not applicable
  1514.  
  1515.         IRQs:
  1516.            9, 10, 11, 12, 14, 15
  1517.  
  1518.  
  1519.         DMA Channels:
  1520.            EISA board, not applicable
  1521.  
  1522.         IO:
  1523.            port mapped, bus master
  1524.  
  1525.  
  1526.      Autoprobe:
  1527.         works with all supported configurations
  1528.  
  1529.  
  1530.      Autoprobe override:
  1531.         none
  1532.  
  1533.  
  1534.      Note:
  1535.         This board has been discontinued by Adaptec.
  1536.  
  1537.  
  1538.      Common Problems:
  1539.  
  1540.         1. If the Adaptec 1740 driver prints the message ``aha1740:
  1541.            Board detected, but EBCNTRL = % x, so disabled it.''  your
  1542.            board was disabled because it was not running in enhanced
  1543.            mode.  Boards running in standard 1542 mode are not
  1544.            supported.
  1545.  
  1546.  
  1547.   4.6.  Adaptec 274x, 284x, 294x (Standard)
  1548.  
  1549.   Newer revisions may be available at
  1550.   <ftp://ftp.cpsc.ucalgary.ca/pub/systems/linux/aha274x/aha274x-pre-
  1551.   alpha.tar .gz>
  1552.  
  1553.   Supported Configurations:
  1554.  
  1555.      274x:
  1556.  
  1557.         EISA Slots:
  1558.            1-12
  1559.  
  1560.         IRQs:
  1561.            ALL
  1562.  
  1563.         IO:
  1564.            port mapped, bus master
  1565.  
  1566.      284x:
  1567.  
  1568.         Ports:
  1569.            All
  1570.  
  1571.         IRQs:
  1572.            All
  1573.  
  1574.         DMA Channels:
  1575.            All
  1576.  
  1577.  
  1578.      294x
  1579.         PCI
  1580.  
  1581.  
  1582.      Note:
  1583.         BIOS MUST be enabled
  1584.  
  1585.      Note:
  1586.         The B channel on 2742AT boards is ignored.
  1587.  
  1588.  
  1589.  
  1590.   4.7.  Always IN2000  (ALPHA)
  1591.  
  1592.   ALPHA driver available at
  1593.   <ftp://tsx-11.mit.edu/pub/linux/ALPHA/SCSI/in2000>.  The driver is
  1594.   in2000.tar.z, bootable kernel zImage
  1595.  
  1596.      Port:
  1597.         0x100, 0x110, 0x200, 0x220
  1598.  
  1599.      IRQs:
  1600.         10, 11, 14, 15
  1601.  
  1602.      DMA:
  1603.         not used
  1604.  
  1605.      IO:
  1606.         port mapped
  1607.  
  1608.      Autoprobe:
  1609.         BIOS not required
  1610.  
  1611.      Autoprobe override:
  1612.         none
  1613.  
  1614.  
  1615.      Common Problems:
  1616.  
  1617.         1. There are known problems in systems with IDE drives and with
  1618.            swapping.
  1619.  
  1620.  
  1621.   4.8.  EATA: DPT Smartcache, Smartcache Plus, Smartcache III (Standard)
  1622.  
  1623.  
  1624.      Supported boards:
  1625.         all, that support the EATA-DMA protocol (no PM2001).
  1626.  
  1627.         DPT Smartcache:
  1628.            PM2011  PM2012A PM2012B
  1629.  
  1630.         Smartcache III:
  1631.            PM2021  PM2022  PM2024 PM2122  PM2124 PM2322
  1632.  
  1633.         SmartRAID:
  1634.            PM3021  PM3222  PM3224 many of those boards are also
  1635.            available as SKXXXX versions, which are supported as well.
  1636.  
  1637.      Supported Configurations:
  1638.  
  1639.         Slots:
  1640.            ALL
  1641.  
  1642.         Ports:
  1643.            ALL
  1644.  
  1645.         IRQs:
  1646.            ALL level & edge triggered
  1647.  
  1648.         DMA Channels:
  1649.            ISA ALL, EISA/PCI not applicable
  1650.  
  1651.         IO:
  1652.            port mapped, bus master
  1653.  
  1654.         SCSI Channels:
  1655.            ALL
  1656.  
  1657.         Autoprobe:
  1658.            works with all supported configurations
  1659.  
  1660.         Compile time:
  1661.            diskgeometry in eata_dma.h for unusual disk geometries which
  1662.            came from the usage of the old DPTFMT utility.  The latest
  1663.            version of the EATA-DMA driver and a Slackware bootdisk
  1664.            should be available on: <ftp://ftp.uni-
  1665.            mainz.de/pub/Linux/arch/i386/system/EATA/>
  1666.  
  1667.         Common Problems:
  1668.  
  1669.            1. The IDE driver detects the ST-506 interface of the EATA
  1670.               board.
  1671.  
  1672.               a. This will look like similar to one of the following 2
  1673.                  examples:
  1674.  
  1675.  
  1676.  
  1677.                    hd.c: ST-506 interface disk with more than 16 heads detected,
  1678.                    probably due to non-standard sector translation.  Giving up.
  1679.                    (disk % d: cyl=% d, sect=63, head=64)
  1680.  
  1681.                    hdc: probing with STATUS instead of ALTSTATUS
  1682.                    hdc: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
  1683.                    hdc: cannot handle disk with 0 physical heads
  1684.                    hdd: probing with STATUS instead of ALTSTATUS
  1685.                    hdd: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
  1686.                    hdd: cannot handle disk with 0 physical heads
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.               If the IDE driver gets into trouble because of this, ie.
  1693.               you can't access your (real) IDE hardware, change the IO
  1694.               Port and/or the IRQ of the EATA board.
  1695.  
  1696.               b. If the IDE driver finds hardware it can handle ie.
  1697.                  harddisks with a capacity < =504MB, it will allocate
  1698.                  the IO Port and IRQ, so that the eata driver can't
  1699.                  utilize them. In this case also change IO Port and IRQ
  1700.                  (!= 14,15).
  1701.  
  1702.  
  1703.  
  1704.            2. Some old SK2011 boards have a broken firmware. Please
  1705.               contact DPT's customer support for an update.
  1706.  
  1707.  
  1708.   4.9.  p Future Domain 16x0 with TMC-1800, TMC-18C30, TMC-18C50, or
  1709.   TMC-36C70 chi
  1710.  
  1711.  
  1712.      Supported Configurations:
  1713.  
  1714.         BIOSs:
  1715.            2.0, 3.0, 3.2, 3.4, 3.5
  1716.  
  1717.         BIOS Addresses:
  1718.            0xc8000, 0xca000, 0xce000, 0xde000
  1719.  
  1720.         Ports:
  1721.            0x140, 0x150, 0x160, 0x170
  1722.  
  1723.         IRQs:
  1724.            3, 5, 10, 11, 12, 14, 15
  1725.  
  1726.         DMA:
  1727.            not used
  1728.  
  1729.         IO:
  1730.            port mapped
  1731.  
  1732.      Autoprobe:
  1733.         works with all supported configurations, requires installed BIOS
  1734.  
  1735.      Autoprobe Override:
  1736.         none
  1737.  
  1738.      Antiquity Problems, fix by upgrading:
  1739.  
  1740.         1. Old versions do not support the TMC-18C50 chip, and will fail
  1741.            with newer boards.
  1742.  
  1743.         2. Old versions will not have the most current BIOS signatures
  1744.            for autodetection.
  1745.  
  1746.         3. Versions prior to the one included in Linux 1.0.9 and 1.1.6
  1747.            don't support the new SCSI chip or 3.4 BIOS.
  1748.  
  1749.  
  1750.   4.10.  Generic NCR5380 / T130B
  1751.  
  1752.  
  1753.      Supported and Unsupported Configurations:
  1754.  
  1755.         Ports:
  1756.            all
  1757.  
  1758.         IRQs:
  1759.            all
  1760.  
  1761.         DMA:
  1762.            not used
  1763.  
  1764.         IO:
  1765.            port mapped
  1766.  
  1767.      Autoprobe:
  1768.         none
  1769.  
  1770.  
  1771.      Autoprobe Override:
  1772.  
  1773.         Compile time:
  1774.            Define GENERIC_NCR5380_OVERRIDE to be an array of tupples
  1775.            with port, irq, dma, board type - ie
  1776.  
  1777.  
  1778.            _____________________________________________________________
  1779.            #define GENERIC_NCR5380_OVERRIDE {{0x330, 5, DMA_NONE, BOARD_NCR5380}}
  1780.            _____________________________________________________________
  1781.  
  1782.  
  1783.         for a NCR5380 board at port 330, IRQ 5.
  1784.  
  1785.  
  1786.         ________________________________________________________________
  1787.         #define GENERIC_NCR5380_OVERRIDE {{0x350, 5, DMA_NONE, BOARD_NCR53C400}}
  1788.         ________________________________________________________________
  1789.  
  1790.  
  1791.  
  1792.         for a T130B at port 0x350.
  1793.  
  1794.         Older versions of the code eliminate the BOARD_* entry.
  1795.  
  1796.         The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
  1797.  
  1798.  
  1799.         kernel command line:
  1800.  
  1801.         o  ncr5380=port,irq
  1802.  
  1803.         o  ncr5380=port,irq,dma
  1804.  
  1805.         o  ncr53c400=port,irq
  1806.  
  1807.            255 may be used for no irq, 254 for irq autoprobe.
  1808.  
  1809.      Common Problems:
  1810.  
  1811.         1. Using the T130B board with the old (pre public release 6)
  1812.            generic NCR5380 driver which doesn't support the ncr53c400
  1813.            command line option.
  1814.  
  1815.            The NCR5380 compatable registers are offset eight from the
  1816.            base address.  So, if your address is 0x350, use
  1817.  
  1818.  
  1819.  
  1820.              ncr53480=0x358,254
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.         on the kernel command line.
  1827.  
  1828.      Antiquity problems, fix by upgrading :
  1829.  
  1830.         1. The kernel locks up during disk access with T130B or other
  1831.            NCR53c400 boards
  1832.  
  1833.            Pre-public release 6 versions of the Generic NCR5380 driver
  1834.            didn't support interrupts on these boards.  Upgrade.
  1835.  
  1836.  
  1837.      Notes:
  1838.         the generic driver doesn't support DMA yet, and pseudo-DMA isn't
  1839.         supported in the generic driver.
  1840.  
  1841.  
  1842.   4.11.  NCR53c8xx (Standard)
  1843.  
  1844.  
  1845.      Supported and Unsupported Configurations:
  1846.  
  1847.         Base addresses:
  1848.            ALL
  1849.         IRQs:
  1850.            ALL
  1851.  
  1852.         DMA channels:
  1853.            PCI, not applicable
  1854.  
  1855.         IO:
  1856.            port mapped, busmastering
  1857.  
  1858.      Autoprobe:
  1859.         requires PCI BIOS, uses PCI BIOS routines to search for devices
  1860.         and read configuration space
  1861.  
  1862.         The driver uses the pre-programmed values in some registers for
  1863.         initialization, so a BIOS must be installed.
  1864.  
  1865.  
  1866.      Antiquity Problems, fix by upgrading:
  1867.  
  1868.         1. Older versions of Linux had a problem with swapping
  1869.  
  1870.            See Section ``'':System Hangs When Swapping
  1871.  
  1872.         2. Older versions of Linux didn't recognize '815 and '825
  1873.            boards.
  1874.  
  1875.      Common Problems:
  1876.  
  1877.         1. Many people have encountered problems where the chip worked
  1878.            fine under DOS, but failed under Linux with a timeout on test
  1879.            1 due to a lost interrupt.
  1880.  
  1881.            This is often due to a mismatch between the IRQ hardware
  1882.            jumper for a slot or mainboard device and the value set in
  1883.            the CMOS setup.
  1884.  
  1885.            It may also be due to PCI INTB, INTC, or INTD being selected
  1886.            on a PCI board in a system which only supports PCI INTA.
  1887.  
  1888.            Finally, PCI should be using level-sensitive rather than edge
  1889.            triggered interrupts.  Check that your board is jumpered for
  1890.            level-sensitive, and if that fails try edge-triggered because
  1891.            your system may be broken.
  1892.  
  1893.            This problem is especially common with Viglen some Viglen
  1894.            motherboards, where the mainboard IRQ jumper settings are NOT
  1895.            as documented in the manual.  I've been told that what claims
  1896.            to be IRQ5 is really IRQ9, your mileage will vary.
  1897.  
  1898.         2. Lockups occur when using an S3928P, X11, and the NCR chip at
  1899.            the same time.
  1900.  
  1901.            There are hardware bugs in at least some S3928P chip.  Don't
  1902.            do this.
  1903.  
  1904.         3. You get a message on boot up indicating that the I/O mapping
  1905.            was disabled because base address 0 bits 0..1 indicated a non
  1906.            I/O mapping
  1907.  
  1908.            This is due to a BIOS bug in some machines which results in
  1909.            dword reads of configuration regsisters returning the high
  1910.            and low 16 bit words swapped.
  1911.  
  1912.         4. Some systems have problems if PCI write posting, or CPU->PCI
  1913.            buffering are enabled.  If you have problems, disable these
  1914.            options.
  1915.         5. Some systems with the NCR SDMS software in an onboard BIOS
  1916.            ROM and in the system BIOS are unable to boot DOS.  Disabling
  1917.            the image in one place should rectify this problem.
  1918.  
  1919.         6. Some systems have hideous, broken, BIOS chips.  Don't make
  1920.            any bug reports until you've made sure you have the newest
  1921.            ROM from your vendor.
  1922.  
  1923.  
  1924.         o  Intel P90 boards require revision 1.00.04.AX1
  1925.  
  1926.  
  1927.   4.12.  Seagate ST0x/Future Domain TMC-8xx/TMC-9xx
  1928.  
  1929.  
  1930.      Supported and Unsupported Configurations :
  1931.  
  1932.         Base addresses:
  1933.            0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
  1934.  
  1935.         IRQs:
  1936.            3, 5
  1937.  
  1938.         DMA:
  1939.            not used
  1940.  
  1941.         IO:
  1942.            memory mapped
  1943.  
  1944.      Autoprobe:
  1945.         probes for address only, IRQ is assumed to be 5, requires
  1946.         installed BIOS.
  1947.  
  1948.  
  1949.      Autoprobe Override:
  1950.  
  1951.         Compile time:
  1952.            Define OVERRIDE to be the base address, CONTROLLER to FD or
  1953.            SEAGATE as appropriate, and IRQ to the IRQ.
  1954.  
  1955.  
  1956.         kernel command line:
  1957.            st0x=address,irq or tmc8xx=address,irq (only works for
  1958.            .99.13b and newer)
  1959.  
  1960.  
  1961.      Antiquity Problems, fix by upgrading:
  1962.  
  1963.         1. .  Versions prior to the one in the Linux .99.12 kernel had a
  1964.            problem handshaking with some slow devices, where
  1965.  
  1966.            This is what happens when you write data out to the bus
  1967.  
  1968.            a. Write byte to data register, data register is asserted to
  1969.               bus
  1970.  
  1971.            b. time_remaining = 12us
  1972.  
  1973.            c. wait while time_remaining > 0 and REQ is not asserted
  1974.  
  1975.            d. if time_remaining > 0, assert ACK
  1976.  
  1977.            e. wait while time remaining > 0  and REQ is asserted
  1978.  
  1979.            f. deassert ACK
  1980.  
  1981.            The problem was encountered in slow devices that do the com-
  1982.            mand processing as they read the command, where the REQ/ACK
  1983.            handshake takes over 12us - REQ didn't go false when the
  1984.            driver expected it to, so the driver ended up sending multi-
  1985.            ple bytes of data for each REQ pulse.
  1986.  
  1987.         2. With Linux .99.12, a bug was introduced when I fixed the
  1988.            arbitration code, resulting in failed selections on some
  1989.            systems.  This was fixed in .99.13.
  1990.  
  1991.   4.12.1.  Common Problems
  1992.  
  1993.  
  1994.   4.12.1.1.  Command Timeouts
  1995.  
  1996.   There are command timeouts when Linux attempts to read the partition
  1997.   table or do other disk access.
  1998.  
  1999.   The board ships with the defaults set up for MSDOS, ie interrupts are
  2000.   disabled.  To jumper the board for interrupts, on the Seagate use
  2001.   jumper W3 (ST01) or JP3 (ST02) and short pins F-G to select IRQ 5.
  2002.  
  2003.  
  2004.   4.12.1.2.  Some Devices Don't Work
  2005.  
  2006.   The driver can't handle some devices, particularly cheap SCSI tapes
  2007.   and CDROMs.
  2008.  
  2009.   The Seagate ties the SCSI bus REQ/ACK handshaking into the PC bus IO
  2010.   CHANNEL READY and (optionally) 0WS signals.  Unfortunately, it doesn't
  2011.   tell you when the watchdog timer runs out, and you have no way of
  2012.   knowing for certain that REQ went low, and may end up seeing one REQ
  2013.   pulse as multiple REQ pulses.
  2014.  
  2015.   Dealing with this means using a tight loop to look for REQ to go low,
  2016.   with a timeout incase you don't catch the transition due to an
  2017.   interrupt, etc.  This results in a performance decrease, so it would
  2018.   be undesireable to apply this to all SCSI devices.  Instead, it is
  2019.   selected on a per-device basis with the ``borken'' field for the given
  2020.   SCSI device in the scsi_devices array.  If you run into problems, you
  2021.   should try adding your device to the list of devices for which borken
  2022.   is not reset to zero (currently, only the TENEX CDROM drives).
  2023.  
  2024.  
  2025.   4.12.1.3.  Future Domain does not work
  2026.  
  2027.   A future domain board (specific examples include the 840,841, 880, and
  2028.   881) doesn't work.
  2029.  
  2030.   A few of the Future domain boards use the Seagate register mapping,
  2031.   and have the MSG and CD bits of the status register flipped.
  2032.  
  2033.   You should edit seagate.h, swapping the definitions for STAT_MSG and
  2034.   STAT_CD, and recompile the kernel with CONTROLLER defined to SEAGATE
  2035.   and an appropriate IRQ and OVERRIDE specified.
  2036.  
  2037.  
  2038.   4.12.1.4.  HDIO_REQ or HDIO_GETGEO failed
  2039.  
  2040.   When attempting to fdisk your drive, you get error messages indicating
  2041.   that the HDIO_REQ or HDIO_GETGEO ioctl failed, or
  2042.  
  2043.   You must set heads sectors and cylinders.  You can do this from the
  2044.   extra functions menu.
  2045.  
  2046.  
  2047.   See Section ``'': Partitioning
  2048.  
  2049.  
  2050.   4.12.1.5.  Fdisk fails
  2051.  
  2052.   After manually specifying the drive geometry, subsequent attempts to
  2053.   read the partition table result in partition boundary not on a
  2054.   cylinder boundary, physical and logical boundaries don't match, etc.
  2055.   error messages.
  2056.  
  2057.   See Section ``'': Partitioning
  2058.  
  2059.  
  2060.   4.12.1.6.  Used to work but now it doesn't
  2061.  
  2062.   Some systems which worked prior to .99.13 fail with newer versions of
  2063.   Linux.  Older versions of Linux assigned the CONTROL and DATA
  2064.   registers in an order different than that outlined in the Seagate
  2065.   documentation, which broke on some systems.  Newer versions make the
  2066.   assignment in the correct way, but this breaks other systems.
  2067.  
  2068.   The code in seagate.c looks like this now :
  2069.  
  2070.  
  2071.   ______________________________________________________________________
  2072.   cli();
  2073.   DATA = (unsigned char) ((1 <<target) | (controller_type == SEAGATE ? 0x80 : 0x4
  2074.   0));
  2075.   CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
  2076.   (reselect ? CMD_ATTN : 0);
  2077.   sti();
  2078.   ______________________________________________________________________
  2079.  
  2080.  
  2081.  
  2082.   Changing this to
  2083.  
  2084.  
  2085.   ______________________________________________________________________
  2086.   cli();
  2087.   CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
  2088.   (reselect ? CMD_ATTN : 0);
  2089.   DATA = (unsigned char) ((1 <<target) | (controller_type == SEAGATE ? 0x80 : 0x4
  2090.   0));
  2091.   sti()
  2092.   ______________________________________________________________________
  2093.  
  2094.  
  2095.   may fix your problem.
  2096.  
  2097.  
  2098.   4.12.2.  Defines
  2099.  
  2100.   FAST or FAST32 will use blind transfers where possible
  2101.  
  2102.   ARBITRATE will cause the host adapter to arbitrate for the bus for
  2103.   better SCSI-II compatability, rather than just waiting for BUS FREE
  2104.   and then doing its thing.  Should let us do one command per Lun when I
  2105.   integrate my reorganization changes into the distribution sources.
  2106.  
  2107.   SLOW_HANDSHAKE will allow compatability with broken devices that don't
  2108.   handshake fast enough (ie, some CD ROM's) for the Seagate code.
  2109.  
  2110.   SLOW_RATE=x, x some number will let you specify a default transfer
  2111.   rate if handshaking isn't working correctly.
  2112.  
  2113.   4.13.  PAS16 SCSI
  2114.  
  2115.  
  2116.      Supported and Unsupported Configurations:
  2117.  
  2118.         Ports:
  2119.            0x388, 0x384, 0x38x, 0x288
  2120.  
  2121.         IRQs:
  2122.            10, 12, 14, 15
  2123.  
  2124.         IMPORTANT:
  2125.            IRQ MUST be different from the IRQ used for the sound portion
  2126.            of the board.
  2127.  
  2128.         DMA:
  2129.            not used for the SCSI portion of the board
  2130.  
  2131.         IO:
  2132.            port mapped
  2133.  
  2134.      Autoprobe:
  2135.         does not require BIOS
  2136.  
  2137.  
  2138.      Autoprobe Override:
  2139.  
  2140.         Compile time:
  2141.            Define PAS16_OVERRIDE to be an array of port, irq tupples.
  2142.            Ie
  2143.  
  2144.  
  2145.            _____________________________________________________________
  2146.            #define PAS16_OVERRIDE {{0x388, 10}}
  2147.            _____________________________________________________________
  2148.  
  2149.  
  2150.  
  2151.         for a board at port 0x388, IRQ 10.
  2152.  
  2153.  
  2154.         kernel command line:
  2155.            pas16=port,irq
  2156.  
  2157.  
  2158.         Defines:
  2159.  
  2160.         o  AUTOSENSE - if defined, REQUEST SENSE will be performed
  2161.            automatically for commands that return with a CHECK CONDITION
  2162.            status.
  2163.  
  2164.         o  PSEUDO_DMA - enables PSEUDO-DMA hardware, should give a 3-4X
  2165.            performance increase compared to polled I/O.
  2166.  
  2167.         o  PARITY - enable parity checking.  Not supported
  2168.  
  2169.         o  SCSI2 - enable support for SCSI-II tagged queueing.  Untested
  2170.  
  2171.  
  2172.         o  UNSAFE - leave interrupts enabled during pseudo-DMA
  2173.            transfers.  You only really want to use this if you're having
  2174.            a problem with dropped characters during high speed
  2175.            communications, and even then, you're going to be better off
  2176.            twiddling with transfersize.
  2177.  
  2178.  
  2179.         o  USLEEP - enable support for devices that don't disconnect.
  2180.            Untested.
  2181.  
  2182.  
  2183.      Common problems:
  2184.  
  2185.         1. Command timeouts, aborts, etc.
  2186.  
  2187.            You should install the NCR5380 patches that I posted to the
  2188.            net some time ago, which should be integrated into some
  2189.            future alpha release.  These patches fix a race condition in
  2190.            earlier NCR5380 driver cores, as well as fixing support for
  2191.            multiple devices on NCR5380 based boards.
  2192.  
  2193.            If that fails, you should disable the PSEUDO_DMA option by
  2194.            changing the # define PSEUDO_DMA line in drivers/scsi/pas16.c
  2195.            to # undef PSEUDO_DMA.
  2196.  
  2197.            Note that the later should be considered a last resort,
  2198.            because there will be a severe performance degradation.
  2199.  
  2200.  
  2201.   4.14.  Trantor T128/T128F/T228
  2202.  
  2203.  
  2204.      Supported and Unsupported Configurations:
  2205.  
  2206.         Base addresses:
  2207.            0xcc000, 00xc8000, 0xdc000, 0xd8000
  2208.  
  2209.         IRQs:
  2210.  
  2211.         o  none, 3, 5, 7 (all boards)
  2212.  
  2213.         o  10, 12, 14, 15 (T128F only)
  2214.  
  2215.         DMA:
  2216.            not used.
  2217.  
  2218.         IO:
  2219.            memory mapped
  2220.  
  2221.      Autoprobe:
  2222.         works for all supported configurations, requires installed BIOS.
  2223.  
  2224.  
  2225.      Autoprobe Override:
  2226.  
  2227.         Compile time:
  2228.            Define T128_OVERRIDE to be an array of address, irq tupples.
  2229.            Ie
  2230.  
  2231.  
  2232.            _____________________________________________________________
  2233.            #define T128_OVERRIDE {{0xcc000, 5}}
  2234.            _____________________________________________________________
  2235.  
  2236.  
  2237.  
  2238.         for a board at address 0xcc000, IRQ 5.
  2239.  
  2240.         The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
  2241.  
  2242.  
  2243.         kernel command line:
  2244.            t128=address,irq
  2245.            -1 may be used for no irq, -2 for irq autoprobe.
  2246.  
  2247.  
  2248.         Defines:
  2249.  
  2250.            AUTOSENSE
  2251.               if defined, REQUEST SENSE will be performed automatically
  2252.               for commands that return with a CHECK CONDITION status.
  2253.  
  2254.  
  2255.            PSEUDO_DMA
  2256.               enables PSEUDO-DMA hardware, should give a 3-4X
  2257.               performance increase compared to polled I/O.
  2258.  
  2259.  
  2260.            PARITY
  2261.               enable parity checking.  Not supported
  2262.  
  2263.  
  2264.            SCSI2
  2265.               enable support for SCSI-II tagged queueing.  Untested
  2266.  
  2267.  
  2268.  
  2269.            UNSAFE
  2270.               leave interrupts enabled during pseudo-DMA transfers.  You
  2271.               only really want to use this if you're having a problem
  2272.               with dropped characters during high speed communications,
  2273.               and even then, you're going to be better off twiddling
  2274.               with transfersize.
  2275.  
  2276.  
  2277.            USLEEP
  2278.               enable support for devices that don't disconnect.
  2279.               Untested.
  2280.  
  2281.      Common Problems:
  2282.  
  2283.         1. Command timeouts, aborts, etc.
  2284.  
  2285.            You should install the NCR5380 patches that I posted to the
  2286.            net some time ago, which should be integrated into some
  2287.            future alpha release.  These patches fix a race condition in
  2288.            earlier NCR5380 driver cores, as well as fixing support for
  2289.            multiple devices on NCR5380 based boards.
  2290.  
  2291.            If that fails, you should disable the PSEUDO_DMA option by
  2292.            changing the # define PSEUDO_DMA line in drivers/scsi/pas16.c
  2293.            to # undef PSEUDO_DMA.
  2294.  
  2295.            Note that the later should be considered a last resort,
  2296.            because there will be a severe performance degradation.
  2297.  
  2298.  
  2299.   4.15.  Ultrastor 14f (ISA), 24f (EISA), 34f (VLB)
  2300.  
  2301.  
  2302.      Supported Configurations:
  2303.  
  2304.         Ports:
  2305.            0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340
  2306.  
  2307.         IRQs:
  2308.            10, 11, 14, 15
  2309.  
  2310.  
  2311.         DMA channels:
  2312.            5, 6, 7
  2313.  
  2314.         IO:
  2315.            port mapped, bus master
  2316.  
  2317.      Autoprobe:
  2318.         does not work for boards at port 0x310, BIOS not required.
  2319.  
  2320.  
  2321.      Autoprobe override:
  2322.         compile time only, define PORT_OVERRIDE
  2323.  
  2324.  
  2325.      Common Problems :
  2326.  
  2327.         1. The address 0x310 is not supported by the autoprobe code, and
  2328.            may cause conflicts if networking is enabled.
  2329.  
  2330.            Please use a different address.
  2331.  
  2332.         2. Using an Ultrastor at address 0x330 may cause the system to
  2333.            hang when the sound drivers are autoprobing.
  2334.  
  2335.            Please use a different address.
  2336.  
  2337.         3. Various other drivers do unsafe probes at various addresses,
  2338.            if you are having problems with detection or the system is
  2339.            hanging at boot time, please try a different address.
  2340.  
  2341.            0x340 is recommended as an address that is known to work.
  2342.  
  2343.         4. Linux detects no SCSI devices, but detects your SCSI hard
  2344.            disk on an Ultrastor SCSI board as a normal hard disk, and
  2345.            the hard disk driver refuses to support it.  Note that when
  2346.            this occurs, you will probably also get a message
  2347.  
  2348.            hd.c: ST-506 interface disk with more than 16 heads detected,
  2349.            probably due to non-standard sector translation.  Giving up.
  2350.            (disk % d: cyl=% d, sect=63, head=64)
  2351.  
  2352.            If this is the case, you are running the Ultrastor board in
  2353.            WD1003 emulation mode.  You have to
  2354.  
  2355.            a. Switch the ultrastor into native mode.  This is the
  2356.               recommended action, since the SCSI driver can be
  2357.               significantly faster than the IDE driver, especially with
  2358.               the clustered read/write patches installed.  Some users
  2359.               have sustained in excess of 2M/sec through the file system
  2360.               using these patches.
  2361.  
  2362.               Note that this will be necessary if you wish to use any
  2363.               non- hard disk, or more than two hard disk devices on the
  2364.               Ultrastor.
  2365.  
  2366.            b. Use the kernel command line switch
  2367.  
  2368.  
  2369.  
  2370.                 hd=cylinders,heads,sectors
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.            to override the default setting to bootstrap yourself,
  2377.            keeping number of cylinders < = 2048, number of heads < = 16,
  2378.            and number of sectors < = 255 such that cylinders * heads *
  2379.            sectors is the same for both mappings.
  2380.  
  2381.            You'll also have to manually specify the disk geometry when
  2382.            running fdisk under Linux.  Failure to do so will result in
  2383.            incorrect partition entries being written, which will work
  2384.            correctly with Linux but fail under MSDOS which looks at the
  2385.            cylinder/head/sector entries in the table.
  2386.  
  2387.            Once Linux is up, you can avoid the inconvience of having to
  2388.            boot by hand by recompiling the kernel with an appropriately
  2389.            defined HD_TYPE macro in include/linux/config.h.
  2390.  
  2391.  
  2392.   4.16.  Western Digital 7000
  2393.  
  2394.  
  2395.      Supported Configurations :
  2396.  
  2397.         BIOS Addresses:
  2398.            0xce000
  2399.  
  2400.         Ports:
  2401.            0x350
  2402.  
  2403.         IRQs:
  2404.            15
  2405.  
  2406.         DMA Channels:
  2407.            6
  2408.  
  2409.         IO:
  2410.            port mapped, bus master
  2411.  
  2412.      Autoprobe:
  2413.         requires installed BIOS
  2414.  
  2415.  
  2416.      Common Problems :
  2417.  
  2418.         1. There are several revisisions of the chip and firmware.
  2419.            Supposedly, revision 3 boards do not work, revision 5 boards
  2420.            do, chips with no suffix do not work, chips with an 'A'
  2421.            suffix do.
  2422.  
  2423.         2. The board supports a few BIOS addresses which aren't on the
  2424.            list of supported addresses.  If you run into this situation,
  2425.            please use one of the supported addresses and submit a bug
  2426.            report as outlined in Section 2, ``Bug Reports''
  2427.  
  2428.  
  2429.   5.  Disks
  2430.  
  2431.   This section gives information that is specific to disk drives.
  2432.  
  2433.  
  2434.   5.1.  Supported and Unsupported Hardware
  2435.  
  2436.   All direct access SCSI devices with a block size of 256, 512, or 1024
  2437.   bytes should work.  Other block sizes will not work (Note that this
  2438.   can often be fixed by changing the block and/or sector sizes using the
  2439.   MODE SELECT SCSI command)
  2440.  
  2441.   Sector size refers to the number of data bytes allocated per sector on
  2442.   a device, ie CDROMs use a 2048 byte sector size.
  2443.   Block size refers to the size of the logical blocks used to interface
  2444.   with the device.  Although this is usually identical to sector size,
  2445.   some devices map multiple smaller physical sectors (ie, 256 bytes in
  2446.   the case of 55M Syquest drives) to larger logical blocks or vice versa
  2447.   (ie, 512 byte blocks on SUN compatable CDROM drives).
  2448.  
  2449.   Removeable media devices, including Bernoulis, flopticals, and MO
  2450.   drives work.
  2451.  
  2452.   In theory, drives up to a terrabyte in size should work.  There is
  2453.   definately no problem with tiny 9G drives.
  2454.  
  2455.  
  2456.   5.2.  Common Problems
  2457.  
  2458.  
  2459.  
  2460.   5.2.1.  Cylinder > 1024 message.
  2461.  
  2462.  
  2463.   When partitioning, you get a warning message about ``cylinder > 1024''
  2464.   or you are unable to boot from a partition including a logical
  2465.   cylinder past logical cylinder 1024.
  2466.  
  2467.   This is a BIOS limitation.
  2468.  
  2469.   See Section ``'': Disk Geometry and Partitioning for a n explanation.
  2470.  
  2471.  
  2472.   5.2.2.  You are unable to partition ``/dev/hd*''
  2473.  
  2474.  
  2475.   /dev/hd* aren't SCSI devices, /dev/sd* are.
  2476.  
  2477.   See Section ``'': Device files, and Section ``'', Disk Geometry and
  2478.   Partitioning for the correct device names and partitioning procedure.
  2479.  
  2480.  
  2481.   5.2.3.  Unable to eject media from a removeable media drive.
  2482.  
  2483.  
  2484.   Linux attempts to lock the drive door when a piece of media is mounted
  2485.   to prevent filesystem corruption due to an inadvertant media change.
  2486.  
  2487.   Please unmount your disks before ejecting them.
  2488.  
  2489.  
  2490.  
  2491.   5.2.4.  Unable to boot using LILO from a SCSI disk
  2492.  
  2493.  
  2494.   In some cases, the SCSI driver and BIOS will disagree over the correct
  2495.   BIOS mapping to use, and will result in LILO hanging after 'LI' at
  2496.   boot time and/or other problems.
  2497.  
  2498.   To workarround this, you'll have to determine your BIOS geometry
  2499.   mapping used under DOS, and make an entry for your disk in
  2500.   /etc/lilo/disktab.
  2501.  
  2502.   Alternatively, you may be able to use the ``linear'' configuration
  2503.   file option.
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.   5.2.5.  Fdisk responds with
  2510.  
  2511.  
  2512.  
  2513.        You must set heads sectors and cylinders.
  2514.        You can do this from the extra functions menu.
  2515.        and disk geometry is not 'remembered' when fdisk is rerun.
  2516.  
  2517.  
  2518.  
  2519.  
  2520.   See Section ``'': Partitioning
  2521.  
  2522.  
  2523.   5.2.6.  Only one drive is detected on a bridge board with
  2524.  
  2525.   multiple drives connected.
  2526.  
  2527.   Linux won't search LUNs past zero on SCSI devices which predate ANSI
  2528.   SCSI revision 1.  If you wish devices on alternate LUNs to be
  2529.   recognized, you will have to modify drivers/scsi/scsi.c:scan_scsis().
  2530.  
  2531.  
  2532.   5.2.7.  System Hangs When Swapping
  2533.  
  2534.   We think this has been fixed, try upgrading to 1.1.38.
  2535.  
  2536.  
  2537.   5.2.8.  Connor CFP1060S disks get corrupted
  2538.  
  2539.   This is due to a microcode bug in the read-ahead and caching code.
  2540.  
  2541.   >From Soenke Behrens of Conner tech. support:
  2542.  
  2543.  
  2544.  
  2545.        During the past few weeks, we got several calls from customers stating
  2546.        that they had severe problems with Conner CFP1060x 1GB SCSI drives
  2547.        using the Linux operating system. Symptoms were corrupt filesystems
  2548.        (damaged inodes) reported by e2fsck on each system boot and similar
  2549.        errors.
  2550.  
  2551.        There is now a fix available for customers with a CFP1060x (microcode
  2552.        revisions 9WA1.62/1.66/1.68) and Linux. To apply the upgrade, you
  2553.        will need a DOS boot disk and ASPI drivers that can access the hard
  2554.        drive. The upgrade downloads new queuing and lookahead code into the
  2555.        non-volatile SCSI RAM of the drive.
  2556.  
  2557.        If you are experiencing problems with a disk that has microcode
  2558.        revision 9WA1.60, you will have to contact your nearest Conner service
  2559.        centre to get the disk upgraded. The microcode revision can be found
  2560.        on the label of the drive and on the underside of the drive on a label
  2561.        on one of the ICs.
  2562.  
  2563.        If you are confident that you can perform the upgrade yourself, please
  2564.        contact Conner Technical Support and have your microcode revision
  2565.        ready. Conner Technical Support Europe can be reached on +44-1294-315333,
  2566.        Conner Technical Support in the USA can be reached on 1-800-4CONNER.
  2567.  
  2568.        Regards
  2569.        Soenke Behrens
  2570.        European Technical Support
  2571.  
  2572.  
  2573.  
  2574.  
  2575.   5.3.  Device Files
  2576.  
  2577.  
  2578.   SCSI disks use block device major 8, and there are no ``raw'' devices
  2579.   ala BSD.
  2580.  
  2581.   16 minor numbers are allocated to each SCSI disk, with minor % 16 == 0
  2582.   being the whole disk, minors  1 < = (minor % 16) < = 4 the four prima
  2583.   ry partitions, minors 5 < = (minor % 16) < = 15 any extended
  2584.   partitions.
  2585.  
  2586.   Due to constraints imposed by Linux's use of a sixteen bit dev_t with
  2587.   only eight bits allocated to the minor number, the SCSI disk minor
  2588.   numbers are assigned dynamically starting with the lowest SCSI
  2589.   HOST/ID/LUN.
  2590.  
  2591.   Ie, a configuration may work out like this (with one host adapter)
  2592.  
  2593.         Device                       Target     Lun     SCSI disk
  2594.         84M Seagate                    0         0      /dev/sda
  2595.         SCSI-> SMD bridge disk 0       3         0      /dev/sdb
  2596.         SCSI-> SMD bridge disk 1       3         1      /dev/sdc
  2597.         Wangtek tape                   4         0      none
  2598.         213M Maxtor                    6         0      /dev/sdd
  2599.         etc.
  2600.  
  2601.  
  2602.   The standard naming convention is
  2603.  
  2604.   /dev/sd{letter} for the entire disk device ((minor % 16) == 0)
  2605.   /dev/sd{letter}{partition} for the partitions on that device (1 < =
  2606.   (minor % 16) < = 15)
  2607.  
  2608.   Ie
  2609.  
  2610.                  Device        type      major     minor
  2611.                  /dev/sda      block       8         0
  2612.                  /dev/sda1     block       8         1
  2613.                  /dev/sda2     block       8         2
  2614.                  /dev/sda3     block       8         3
  2615.                  etc.
  2616.  
  2617.  
  2618.  
  2619.   5.4.  Partitioning
  2620.  
  2621.  
  2622.   You can partition your SCSI disks using the partitioning program of
  2623.   your choice, under DOS, OS/2, Linux or any other operating system
  2624.   supporting the standard partitioning scheme.
  2625.  
  2626.   The correct way to run the Linux fdisk program is by specifying the
  2627.   device on the command line. Ie, to partition the first SCSI disk,
  2628.  
  2629.  
  2630.        fdisk /dev/sda
  2631.  
  2632.  
  2633.  
  2634.  
  2635.   If you don't explicitly specify the device, the partitioning program
  2636.   may default to /dev/hda, which isn't a SCSI disk.
  2637.  
  2638.   In some cases, fdisk will respond with
  2639.  
  2640.  
  2641.        You must set heads sectors and cylinders.
  2642.        You can do this from the extra functions menu.
  2643.  
  2644.        Command (m for help):
  2645.  
  2646.  
  2647.  
  2648.  
  2649.   and/or give a message to the effect that the HDIO_REQ or HDIO_GETGEO
  2650.   ioctl failed.  In these cases, you must manually specify the disk
  2651.   geometry as outlined in Subsection ``'': Disk Geometry when running
  2652.   fdisk, and also in /etc/disktab if you wish to boot kernels off that
  2653.   disk with LILO.
  2654.  
  2655.   If you have manually specified the disk geometry, subsequent attempts
  2656.   to run fdisk will give the same error message.  This is normal, since
  2657.   PCs don't store the disk geometry information in the partition table.
  2658.   In and of itself, will cause _NO PROBLEMS_, and you will have no
  2659.   problems accessing partitions you created on the drive with Linux.
  2660.   Some vendors' poor installation code will choke on this, in which case
  2661.   you should contact your vendor and insist that they fix the code.
  2662.  
  2663.   In some cases, you will get a warning message about a partition ending
  2664.   past cylinder 1024.  If you create one of these partitions, you will
  2665.   be unable to boot Linux kernels off of that partition using LILO.
  2666.   Note, however, that this restriction does not preclude the creation of
  2667.   a root partition partially or entirely above the 1024 cylinder mark,
  2668.   since it is possible to create a small /boot partition below the 1024
  2669.   cylinder mark or to boot kernels off existing partitions.
  2670.  
  2671.  
  2672.   5.5.  Disk Geometry
  2673.  
  2674.   Under Linux, each disk is viewed as the SCSI host adapter sees it : N
  2675.   blocks, numbered from 0 to N-1, all error free, where as DOS/BIOS
  2676.   predate intelligent disks and apply an arbitrary head / cylinder /
  2677.   sector mapping to this linear addressing.
  2678.  
  2679.   This can pose a problem when you partition the drives under Linux,
  2680.   since there is no portable way to get DOS/BIOS's idea of the mapped
  2681.   geometry.  In most cases, a HDIO_GETGEO ioctl() can be implemented to
  2682.   return this mapping.  Unfortunately, when the vendor (ie Seagate) has
  2683.   chosen a perverse, non-standard, and undocumented mapping, this is not
  2684.   possible and geometry must be manually specified
  2685.  
  2686.   If manual specification of the is required, you have one of several
  2687.   options :
  2688.  
  2689.   1. If you don't care about using DOS, or booting kernels from the
  2690.      drive with LILO, create a translation such that heads * cylinders *
  2691.      sectors * 512 < size of your drive in bytes (a megabyte is defined
  2692.      as 2^20 bytes).
  2693.  
  2694.  
  2695.                 1     < =       heads       < =     256
  2696.                 1     < =     cylinders     < =     1024
  2697.                 1     < =      sectors      < =      63
  2698.  
  2699.  
  2700.  
  2701.   2. Use the BIOS mapping.  In some cases, this will mean reconfiguring
  2702.      the disk so that it is at SCSI ID 0, and disabling the second IDE
  2703.      drive (if you have one).
  2704.  
  2705.      You can either use a program like NU, or you can use the following
  2706.      program:
  2707.      ___________________________________________________________________
  2708.      begin 664 dparam.com
  2709.      MBAZ``##_B+^!`+N!`(H'0SP@=/D\,'5:@#]X=`6`/UAU4(!_`3AU2H!_`P!U
  2710.      M1(I7`H#J,(#Z`7<Y@,*`M`C-$PCD=3-14HC()#\PY.@R`.@J`%J(\/[`,.3H
  2711.      M)0#H'0!8AL2Q!M+L0.@7`+K"`;0)S2'#NIP!ZR"ZQ0'K&[K5`>L6N]T!,=*Y
  2712.      M"@#W\8#",$N(%PG`=>^)VK0)S2'#=7-A9V4Z(&1P87)A;2`P>#@P#0H@("!O
  2713.      L<B`@9'!A<F%M(#!X.#$-"B1);G9A;&ED(&1R:79E#0HD("`D```````D``!O
  2714.      `
  2715.      end
  2716.      ___________________________________________________________________
  2717.  
  2718.  
  2719.  
  2720.   When run it prints the sectors, heads, and cylinders of the drive
  2721.   whose BIOS address was specified on the command line (0x80 is the
  2722.   first disk, 0x81 the second).
  2723.  
  2724.   Ie,
  2725.  
  2726.  
  2727.        dparam 0x80
  2728.        60 17 1007
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.   Would mean that C: had 60 sectors, 17 heads, and 1007 cylinders.
  2735.  
  2736.  
  2737.   6.  CDROMs
  2738.  
  2739.   This section gives information that is specific to cdrom drives.
  2740.  
  2741.  
  2742.   6.1.  Supported and Unsupported Hardware
  2743.  
  2744.   SCSI CDs with a block size of 512 or 2048 bytes should work.  Other
  2745.   block sizes will not work.
  2746.  
  2747.  
  2748.   6.2.  Common Problems
  2749.  
  2750.   6.2.1.  Unable to mount cdrom.
  2751.  
  2752.   The correct syntax to mount an ISO-9660 CDROM is
  2753.  
  2754.  
  2755.  
  2756.        mount -t iso9660 /dev/sr0 /mount_point -o ro
  2757.  
  2758.  
  2759.  
  2760.  
  2761.   Note that for this to work, you must have the kernel configured with
  2762.   support for SCSI, your host adapter, the SCSI CDROM driver, and the
  2763.   iso9660 filesystem.
  2764.  
  2765.   Note that as of Linux 1.1.32, read-only devices such as CDROMs cannot
  2766.   be mounted with the default read/write options.
  2767.  
  2768.  
  2769.   6.2.2.  Unable to eject cdrom.
  2770.  
  2771.  
  2772.  
  2773.   Linux attempts to lock the drive door when a piece of media is mounted
  2774.   to prevent filesystem corruption due to an inadvertant media change.
  2775.  
  2776.  
  2777.   6.2.3.  Unable to play audio.
  2778.  
  2779.  
  2780.   The programs Workman or xcdplayer will do this for you.
  2781.  
  2782.  
  2783.   6.2.4.  Workman or Xcdplayer do not work.
  2784.  
  2785.  
  2786.   The functions to control audio functions are part of the SCSI-II
  2787.   command set, so any drive that is not SCSI-II will probably not work
  2788.   here.  Also, many SCSI-I and some SCSI-II CDROM drives use a
  2789.   proprietary command set for accessing audio functions instead of the
  2790.   SCSI-II command set.  For NEC drives, there is a version of xcdplayer
  2791.   specially adapted to use this command set floating around - try
  2792.   looking on  <ftp://tsx-11.mit.edu/pub/linux/BETA/cdrom>
  2793.  
  2794.   These programs may work with some of the non-SCSI cdrom drives if the
  2795.   driver implements the same ioctls as the scsi drivers.
  2796.  
  2797.  
  2798.   6.3.  Device Files
  2799.  
  2800.  
  2801.   SCSI CDROMs use major 11.
  2802.  
  2803.   Minors are allocated dynamically (See Section 4: Disks, Subsection
  2804.   4.3: Device Files for an example) with the first CDROM found being
  2805.   minor 0, the second minor 1, etc.
  2806.  
  2807.   The standard naming convention is
  2808.  
  2809.   /dev/sr{digit} ie
  2810.  
  2811.   /dev/sr0 /dev/sr1
  2812.  
  2813.   etc.
  2814.  
  2815.  
  2816.   7.  Tapes
  2817.  
  2818.  
  2819.   This setion gives information that is specific to scsi tape drives.
  2820.  
  2821.  
  2822.   7.1.  Supported and Unsupported Hardware
  2823.  
  2824.  
  2825.   Drives using both fixed and variable length blocks smaller than the
  2826.   the driver buffer length (set to 32K in the distribution sources) are
  2827.   supported.
  2828.  
  2829.   Parameters (block size, buffering, density) are set with ioctls
  2830.   (usually with the mt program), and remain in effect after the device
  2831.   is closed and reopened.
  2832.  
  2833.   Virtually all drives should work, including :
  2834.  
  2835.   o  Archive Viper QIC drives, including the 150M and 525M models
  2836.  
  2837.   o  Exabyte 8mm drives
  2838.  
  2839.   o  Wangtek 5150S drives
  2840.  
  2841.   o  Wangdat DAT drives
  2842.  
  2843.  
  2844.   7.2.  Common Problems
  2845.  
  2846.  
  2847.  
  2848.   7.2.1.  Tape drive not recognized at boot time.
  2849.  
  2850.  
  2851.   Try booting with a tape in the drive.
  2852.  
  2853.  
  2854.   7.2.2.  Tapes with multiple files cannot be read properly.
  2855.  
  2856.  
  2857.   When reading a tape with multiple files, the first tar is successful,
  2858.   a second tar fails silently, and retrying the second tar is
  2859.   successful.
  2860.  
  2861.   User level programs, such as tar, don't understand file marks.  The
  2862.   first tar reads up until the end of the file.  The second tar attempts
  2863.   to read at the file mark, gets nothing, but the tape spaces over the
  2864.   file mark.  The third tar is successful since the tape is at the start
  2865.   of the next file.
  2866.  
  2867.   Use mt on the no-rewind device to space forward to the next file.
  2868.  
  2869.  
  2870.  
  2871.   7.2.3.  Decompression fails.
  2872.  
  2873.  
  2874.   Decompressing programs cannot handle the zeros padding the last block
  2875.   of the file.
  2876.  
  2877.   To prevent warnings and errors, wrap your compressed files in a .tar
  2878.   file - ie, rather than doing
  2879.  
  2880.  
  2881.  
  2882.        tar cfvz /dev/nrst0 file.1 file.2 ...
  2883.  
  2884.  
  2885.  
  2886.  
  2887.   do
  2888.  
  2889.  
  2890.  
  2891.        tar cfvz tmp.tar.z file.1 file.2 ...
  2892.  
  2893.        tar cf /dev/nrst0 tmp.tar.z
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.   7.2.4.  Problems taking tapes to/from other systems.
  2900.  
  2901.  
  2902.   You can't read a tape made with another operating system or another
  2903.   operating system can't read a tape written in Linux.
  2904.  
  2905.   Different systems often use different block sizes.  On a tape device
  2906.   using a fixed blocksize, you will get errors when reading blocks
  2907.   written using a different block size.
  2908.  
  2909.   To read these tapes, you must set the blocksize of the tape driver to
  2910.   match the blocksize used when the tape was written, or to variable.
  2911.  
  2912.   Note: this is the hardware block size, not the blocking factor used
  2913.   with tar, dump, etc.
  2914.  
  2915.   You can do this with the mt command -
  2916.  
  2917.  
  2918.  
  2919.        mt setblk <size>
  2920.  
  2921.  
  2922.  
  2923.  
  2924.   or
  2925.  
  2926.  
  2927.  
  2928.        mt setblk 0
  2929.  
  2930.  
  2931.  
  2932.  
  2933.   to get variable block length support.
  2934.  
  2935.   Note that these mt flags are NOT supported under the GNU version of mt
  2936.   which is included with some Linux distributions.  Instead, you must
  2937.   use the BSD derrived Linux SCSI mt command.  Source should be
  2938.   available from
  2939.  
  2940.   <ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi>
  2941.  
  2942.  
  2943.   7.2.5.  ``No such device'' error message.
  2944.  
  2945.  
  2946.   All attempts to access the tape result in a
  2947.  
  2948.   ``No such device''
  2949.  
  2950.   or similar error message.  Check the type of your tape device - it
  2951.   must be a character device with major and minor numbers matching those
  2952.   specified in subsection C, Device Files.
  2953.  
  2954.  
  2955.   7.2.6.  Tape reads at a given density work, writes fail
  2956.  
  2957.  
  2958.   Many tape drives support reading at lower densities for compatability
  2959.   with older harware, but will not write at those same densities.
  2960.  
  2961.   This is especially the case with QIC drives, which will read old 60M
  2962.   tapes but only write new 120, 150, 250, and 525M formats.
  2963.  
  2964.  
  2965.   7.3.  Device Files
  2966.  
  2967.  
  2968.   SCSI tapes use character device major 9.
  2969.  
  2970.  
  2971.   Due to constraints imposed by Linux's use of a sixteen bit dev_t with
  2972.   only eight bits allocated to the minor number, the SCSI tape minor
  2973.   numbers are assigned dynamically starting with the lowest SCSI
  2974.   HOST/ID/LUN.
  2975.  
  2976.   Rewinding devices are numbered from 0 - with the first SCSI tape,
  2977.   /dev/rst0 being c 9 0, the second /dev/rst1 c 9 1, etc.  Non-rewinding
  2978.   devices have the high bit set in the minor number, ie /dev/nrst0 is c
  2979.   9 128.
  2980.  
  2981.   The standard naming convention is /dev/nrst{digit} for non-rewinding
  2982.   devices /dev/rst{digit} for rewinding devices
  2983.  
  2984.  
  2985.   8.  Generic
  2986.  
  2987.  
  2988.   This information gives information that is specific to the generic
  2989.   scsi driver.
  2990.  
  2991.  
  2992.   8.1.  Supported Hardware
  2993.  
  2994.  
  2995.   The Generic SCSI device driver provides an interface for sending SCSI
  2996.   commands to all SCSI devices - disks, tapes, CDROMs, media changer
  2997.   robots, etc.
  2998.  
  2999.   Everything electrically compatable with your SCSI board should work.
  3000.  
  3001.  
  3002.   8.2.  Common Problems
  3003.  
  3004.  
  3005.   None :-).
  3006.  
  3007.  
  3008.   8.3.  Device Files
  3009.  
  3010.  
  3011.   SCSI generic devices use character major 21.  Due to constraints
  3012.   imposed by Linux's use of a 16 bit dev_t, minor numbers are
  3013.   dynamically assigned from 0, one per device, with
  3014.  
  3015.   /dev/sg0
  3016.  
  3017.   corresponding to the lowest numerical target/lun on the first SCSI
  3018.   board.
  3019.  
  3020.  
  3021.   9.  Buyers' Guide
  3022.  
  3023.  
  3024.   A frequent question is:
  3025.  
  3026.   ``Linux supports quite a number of different boards, so which SCSI
  3027.   host adapter should I get.''
  3028.  
  3029.   The answer depends upon how much performance you expect or need,
  3030.   motherboard, and the scsi peripherals that you plan on attaching to
  3031.   your machine.
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.   9.1.  Transfer types
  3038.  
  3039.  
  3040.   The biggest factor affecting performance (in terms of throughput and
  3041.   interactive response time during SCSI I/O) is going to be the transfer
  3042.   type used.
  3043.  
  3044.  
  3045.  
  3046.  
  3047.   9.1.1.  Pure Polled handshaking.
  3048.  
  3049.  
  3050.   A pure polled I/O board will use the CPU to handle all of the SCSI
  3051.   processing, including the REQ/ACK
  3052.  
  3053.   Even a fast CPU will be slower handling the REQ/ACK handshake sequence
  3054.   than a simple finite state machine, resulting in peak transfer rates
  3055.   of about 150K/sec on a fast machine, perhaps 60K/sec on a slow machine
  3056.   (through the filesystem).
  3057.  
  3058.   The driver also must sit in a tight loop as long as the SCSI bus is
  3059.   busy, resulting in near 100% CPU utilitization and extremely poor
  3060.   responsiveness during SCSI/IO.  Slow CDROMs which don't
  3061.   disconnect/reconnect will kill interactive performance with these
  3062.   boards.
  3063.  
  3064.   Not recommended.
  3065.  
  3066.  
  3067.   9.1.2.  Interlocked Polled handshaking
  3068.  
  3069.  
  3070.   Boards using interlocked polled I/O are essentially the same as pure
  3071.   polled I/O boards, only the SCSI REQ/ACK signals the PC bus
  3072.   handshaking signals.  All SCSI processing beyond the handshaking is
  3073.   handled by the CPU.
  3074.  
  3075.   Peak transfer rates of 500-600K/sec through the filesystem re possible
  3076.   on these boards.
  3077.  
  3078.   As with pure polled I/O boards, the driver must sit in a tight loop as
  3079.   long as the SCSI bus is busy, resulting in CPU utilization dependant
  3080.   on the transfer rates of the devices, and when they
  3081.   disconnect/reconnect.  CPU utilization may vary between 25% for single
  3082.   speed CDs which handle disconnect/reconnect properly to 100% for
  3083.   faster drives or broken CDROMs which fail to disconnect/reconnect.
  3084.  
  3085.   On my 486-66, with a T128, I use 90% of my CPU time to sustain a
  3086.   throughput of 547K/sec on a drive with a headrate of 1080K/sec with a
  3087.   T128 board.
  3088.  
  3089.   Sometimes acceptable for slow tapes and CDROMs when low cost is
  3090.   essential.
  3091.  
  3092.  
  3093.   9.1.3.  FIFO Polled
  3094.  
  3095.  
  3096.   Boards using FIFO polled I/O put a small (typically 8K) buffer between
  3097.   the CPU and the SCSI bus, and often implement some amount of
  3098.   intelligence.  The net effect is that the CPU is only tied up when it
  3099.   is transfering data at top speed to the FIFO and when it's handling
  3100.   the rest of the interrupt processing for FIFO empty conditions,
  3101.   disconnect/reconnect, etc.
  3102.  
  3103.   Peak transfer rates should be sufficient to handle most SCSI devices,
  3104.   and have been measured at up to 4M/sec using raw SCSI commands to read
  3105.   64K blocks on a fast Seagate Barcuda with an Adaptec 1520.
  3106.  
  3107.   CPU utilization is dependant on the transfer rates of the devices,
  3108.   with faster devices generating more interrupts per unit time which
  3109.   require more CPU processing time.  Although CPU usage may be high
  3110.   (perhaps 75%) with fast devices, the system usually remains usable.
  3111.   These boards will provide excellent interactive performance with
  3112.   broken devices which don't disconnect/reconnect (typically cheap CDROM
  3113.   drives)
  3114.  
  3115.   Recommended for persons on a budget.
  3116.  
  3117.  
  3118.   9.1.4.  Slave DMA
  3119.  
  3120.  
  3121.   Drivers for boards using slave DMA program the PC's DMA controller for
  3122.   a channel when they do a data transfer, and return control to the CPU.
  3123.  
  3124.   Peak transfer rates are usually handicapped by the poor DMA controller
  3125.   used on PCs, with one such 8-bit board having problems going faster
  3126.   than 140-150K/sec with one mainboard.
  3127.  
  3128.   CPU utilization is very reasonable, slightly less than what is seen
  3129.   with FIFO polled I/O boards.  These boards are very tollerant of
  3130.   broken devices which don't disconnect/reconnect (typically cheap CSG
  3131.   limit DROM drives).
  3132.  
  3133.   Acceptable for slow CDROM drives, tapes, etc.
  3134.  
  3135.  
  3136.   9.1.5.  Busmastering DMA
  3137.  
  3138.  
  3139.   These boards are intelligent.  Drivers for these boards throw a SCSI
  3140.   command, the destination target and lun, and where the data should end
  3141.   upin a structure, and tell the board ``Hey, I have a command for
  3142.   you.''  The driver returns control to various running programs, and
  3143.   eventually the SCSI board gets back and says that it's done.
  3144.  
  3145.   Since the intelligence is in the host adapter firmware and not the
  3146.   driver, drivers for these boards typically support more features -
  3147.   synchronous transfers, tagged queing, etc.
  3148.  
  3149.   With the clustered read/write patches, peak transfer rates through the
  3150.   file system approach 100% of head rate writing, 75% reading.
  3151.  
  3152.   CPU utilization is minimal, irregardless of I/O load, with a measured
  3153.   5% CPU usage while accessing a double speed CDROM on an Adaptec 1540
  3154.   and 20% while sustaining a 1.2M/sec transfer rate on a SCSI disk.
  3155.  
  3156.   Recommended in all cases where money is not extremely tight, the main
  3157.   board is not broken (some broken main boards do not work with bus
  3158.   masters), and applications where time to data is more important than
  3159.   throughput are not being run (bus master overhead may hit 3-4ms per
  3160.   command).
  3161.  
  3162.  
  3163.   9.2.  Scatter/gather
  3164.  
  3165.  
  3166.   The second most important driver/hardware feature with respect to
  3167.   performance is support for scatter/gather I/O.  The overhead of
  3168.   executing a SCSI command is significant - on the order of
  3169.   milliseconds. Intelligent bus masters like the Adaptec 1540 may take
  3170.   3-4ms to process a SCSI command before the target even sees it.  On
  3171.   unbuffered devices, this overhead is allways enough to slip a
  3172.   revolution, resulting in a transfer rate of about 60K/sec (assuming a
  3173.   3600RPM drive) per block transfered at a time.  So, to maximize
  3174.   performance, it is necessary to minimize the number of SCSI commands
  3175.   needed to transfer a given amount of data by transfering more data per
  3176.   command.  Due to the design of the Linux buffer cache, contiguous disk
  3177.   blocks are not contiguous in memory. With the clustered read/write
  3178.   patches, 4K worth of buffers are contiguous.  So, the maximum amount
  3179.   of data which can be transfered per SCSI command is going to be 1K * #
  3180.   of scatter/gather regions without the clustered read/write patches, 4K
  3181.   * # of regions with.  Experimentally, we've determined that 64K is a
  3182.   reasonable amount to transfer with a single SCSI command - meaning 64
  3183.   scatter/gather buffers with clustered read/write patches, 16 without.
  3184.   With the change from 16K to 64K transfers, we saw an improvement from
  3185.   50% of headrate, through the filesystem, reading and writing, to 75%
  3186.   and 100% respectively using an Adaptec 1540 series board.
  3187.  
  3188.  
  3189.   9.3.  Mailbox vs. non-mailbox
  3190.  
  3191.   A number of intelligent host adapters, such as the Ultrastor, WD7000,
  3192.   Adaptec 1540, 1740, and Buslogic boards have used a mailbox-metaphor
  3193.   interface, where SCSI commands are executed by putting a SCSI command
  3194.   structure in a fixed memory location (mailbox), signaling the board
  3195.   (ie, raising the outgoing mail flag), and waiting for a return
  3196.   (incoming mail).  With this high level programming interface, users
  3197.   can often upgrade to a newer board revision to take advantage of new
  3198.   features, such as FAST + WIDE SCSI, without software changes.  Drivers
  3199.   tend to be simpler to implement, may implement a larger feature set,
  3200.   and may be more stable.
  3201.  
  3202.   Other intelligent host adapters, such as the NCR53c7/8xx family, and
  3203.   Adaptec AIC-7770/7870 chips (including the 274x, 284x, and 2940
  3204.   boards) use a lower level programming interface.  This may prove
  3205.   faster since processing can be shifted between the board's processor
  3206.   and faster host CPU, allow better flexibility in implementing certain
  3207.   features (ie, target mode for arbitrary devices), and these boards can
  3208.   be built for less money (In some cases, this is passed on to the
  3209.   consumer (ie, most NCR boards)).  On the down side, drivers tend to be
  3210.   more complex, and must be modified to take advantage of the features
  3211.   present on newer chips.
  3212.  
  3213.  
  3214.   9.4.  Bus types
  3215.  
  3216.   Bus type is the next thing to consider, with choices including ISA,
  3217.   EISA, VESA, and PCI.  Marketing types often spout of absurd bandwidth
  3218.   numbers based on burst transfer rates and fiction, which isn't very
  3219.   useful.  Instead, I've chosen to state ``real-world'' numbers based on
  3220.   measured performance with various peripherials.
  3221.  
  3222.  
  3223.   9.4.1.  ISA
  3224.  
  3225.   Bandwidth is slightly better than 5M/sec for busmastering devices.
  3226.   With an ISA bus, arbitration for busmasters is performed by the
  3227.   venerable 8237 third party DMA controller, resulting in relatively
  3228.   high bus aquisition times.  Interrupt drivers are tri-state and edge
  3229.   triggered, meaning interrupts cannot be shared. Generally, ISA is
  3230.   unbuffered, meaning the host/memory bus is tied up whenever a transfer
  3231.   is occuring. No mechanism is provided to prevent bus-hogging.
  3232.  
  3233.  
  3234.  
  3235.   9.4.2.  VESA
  3236.  
  3237.   Bandwidth is about 30M/sec.  Some VESA systems run the bus out of
  3238.   spec, rendering them incompatable with some boards, so this should be
  3239.   taken into consideration before purchasing hardware without a return
  3240.   guarantee.  Generally, VESA is unbuffered, meaning meaning the
  3241.   host/memory bus is tied up whenever a transfer is occuring.
  3242.  
  3243.  
  3244.   9.4.3.  EISA
  3245.  
  3246.   Bandwidth is about 30M/sec, with busmastering operations generally
  3247.   being faster than VESA.  Some EISA systems buffer the bus, allowing
  3248.   burst transfers to the faster host/memory bus and minimizing impact on
  3249.   CPU performance.  EISA interrupt drivers may be either tri-state edge-
  3250.   triggered or open collector level-active, allowing interrupt sharing
  3251.   with drivers that support it.  Since EISA allocates a separate address
  3252.   space for each board, it is usually less prone to resource conflicts
  3253.   than ISA or VESA.
  3254.  
  3255.  
  3256.   9.4.4.  PCI
  3257.  
  3258.   Bandwidth is about 60M/sec.  Most PCI systems implement write posting
  3259.   buffers on the host bridge, allowing speed mismatches on either side
  3260.   to have a minimum impact on bus/CPU performance.  PCI interrupt
  3261.   drivers are open collector level-active, allowing interrupt sharing
  3262.   with drivers that support it. Mechanisms are provided to prevent bus
  3263.   hogging, and for both master and slave to suspend a bus-mastering
  3264.   operation.
  3265.  
  3266.   Since PCI provides a plug-n-play mechanism with writeable
  3267.   configuration registers on every board, in a separate address space, a
  3268.   propperly implemented PCI system is plug-and play.
  3269.  
  3270.   PCI is extremely strict as to trace length, loading, mechanical
  3271.   specifications, etc. and ultimately should be more reliable than VESA
  3272.   or ISA.
  3273.  
  3274.   In summary, PCI is the best PC bus, although it does have its dark
  3275.   side.  PCI is still in its infancy, and although most manufacturers
  3276.   have ironed out the problems, there is still stock of older, buggy PCI
  3277.   hardware and broken main BIOSes.  For this reason, I _strongly_
  3278.   recommend a return guarantee on the hardware.  While the latest PCI
  3279.   mainboards are truly plug-and-play, older PCI boards may require the
  3280.   user to set options with both jumpers and in software (ie, interrupt
  3281.   assignments).  Although many users have resolved their PCI problems,
  3282.   it has taken time and for this reason I cannot recommend a PCI
  3283.   purchase if having the system operational is extremely time critical.
  3284.  
  3285.   For many slower SCSI devices, such as disks with head rates arround
  3286.   2M/sec or less, CDROMs, and tapes, there will be little difference in
  3287.   throughputs with the different PC bus interfaces.  For faster
  3288.   contemporary SCSI drives (Typical high end multi-gigabyte drives have
  3289.   a head rate of 4-5M/sec, and at least one company is currently ALPHA
  3290.   testing a parallel head unit with a 14M/sec head rate), throughput
  3291.   will often be significantly better with controllers on faster busses,
  3292.   with one user noting a 2.5 fold performance improvement when going
  3293.   from an Adaptec 1542 ISA board to a NCR53c810 PCI board.
  3294.  
  3295.   With the exception of situations where PCI write-posting or a similar
  3296.   write-buffering mechanism is being used, when one of the busses in
  3297.   your system is busy, all of the busses will be unaccessable.  So,
  3298.   although bus saturation may not be interfering with SCSI performance,
  3299.   it may have a negative effect on interactive performance.  Ie, if you
  3300.   have a 4M/sec SCSI disk under ISA, you'll have lost 80% of your
  3301.   bandwidth, and in an ISA/VESA system would only be able to bitblt at
  3302.   6M/sec.  In most cases, a similar impact on processing jobs in the
  3303.   background would also be felt.
  3304.  
  3305.   Note that having over 16M of memory does not preclude using an ISA
  3306.   busmastering SCSI board.  Unlike various broken operating systems,
  3307.   Linux will double buffer when using a DMA with an ISA controller and a
  3308.   transfer is ultimately destined for an area above 16M.  Performance on
  3309.   these transfers only suffers by about 1.5% , ie not noticably.
  3310.  
  3311.   Finally, the price difference between bus masters offered with the
  3312.   different bus interfaces is often minimal.
  3313.  
  3314.   With all that in mind, based on your priorities you will have certain
  3315.   bus preferences.
  3316.  
  3317.  
  3318.      Stability, time critical installations and poor return policies
  3319.         EISA ISA VESA PCI
  3320.  
  3321.  
  3322.      Performance, and typical hobbiest installations
  3323.         PCI EISA VESA ISA
  3324.  
  3325.   As I pointed out earlier, bus mastering versus other transfer modes is
  3326.   going to have a bigger impact on total system performance, and should
  3327.   be considered more important than bus type when purchasing a SCSI
  3328.   controller.
  3329.  
  3330.  
  3331.   9.5.  Multiple devices
  3332.  
  3333.   If will you have multiple devices on your SCSI bus, you may want to
  3334.   see whether the host adapter/driver that you are considering supports
  3335.   more than one outstanding command at one time.  This is very important
  3336.   if you are mixing devices of different speeds, like a tape drive and a
  3337.   disk drive.  If the linux driver only supports one outstanding
  3338.   command, you may be locked out of your disk drive while a tape in the
  3339.   tape drive is rewinding, for example.  With two disk drives, the
  3340.   problem will not be as noticeable, allthough throughput would approach
  3341.   the average of the two transfer rates rather than the sum of the two
  3342.   transfer rates.
  3343.  
  3344.  
  3345.   9.6.  SCSI-I, SCSI-II, SCSI-III FAST and WIDE options, etc.
  3346.  
  3347.  
  3348.   Over the years, SCSI has evolved, with new revisions of the standard
  3349.   introducing higher transfer rates, methods to increase throughput,
  3350.   standardized commands for new devices, and new commands for previously
  3351.   supported devices.
  3352.  
  3353.   In and of themselves, the revision levels don't really mean anything.
  3354.   Excepting minor things like SCSI-II not allowing the single initiator
  3355.   option of SCSI-I, SCSI is backwards compatable, with new features
  3356.   being introduced as options and not mandatory.  So, the descision to
  3357.   call a SCSI adapter SCSI, SCSI-II, or SCSI-III is almost entirely a
  3358.   marketing one.
  3359.  
  3360.  
  3361.   9.7.  Driver feature comparison
  3362.  
  3363.  
  3364.   Driver feature comparison (supported chips are listed in parenthesis)
  3365.  
  3366.  
  3367.   Driver                       Transfer mode          Simultaneous Commands         SG         >1
  3368.                                                             total/LUN             Limit
  3369.   aha152x                      FIFO(8k) Polled                1s/1s                255s
  3370.   (AIC6260,
  3371.   AIC6360)
  3372.   aha1542                      Busmastering DMA               8s/1s                 16         Y
  3373.   aha1740                      Busmastering DMA                32s                  16
  3374.   aha274x                      Busmastering DMA               4s/1s                255s        Y
  3375.   buslogic                     Busmastering DMA                 Y               64s, 8196h
  3376.   eata dma                     Busmastering DMA              64s/16s               64s         Y
  3377.   fdomain                      FIFO(8k) Polled                 1s                  64s
  3378.   TMC1800 except TMC18c30
  3379.   TMC18c30, with 2k FIFO
  3380.   TMC18c50,
  3381.   TMC36c70
  3382.   in2000*                      FIFO(2k) Polled                 1s                  255s
  3383.   g NCR5380                    Pure Polled                   16s/2s                255s         Y
  3384.   (NCR5380,
  3385.   NCR53c80,
  3386.   NCR5381,
  3387.   NCR53c400)
  3388.   gsi8*                        Slave DMA                     16s/2s                255s
  3389.   (NCR5380)
  3390.   PAS16                        Pure Polled or                16s/2s                255s        Y
  3391.   (NCR5380)                    Interlocked Polled
  3392.   (fails on some systems!)
  3393.   seagate                      Interlocked Polled              1s                  255s        N
  3394.   wd7000                       Busmastering DMA                8s                   1
  3395.   t128                         Interlocked Polled              16s                 255s        Y
  3396.   (NCR5380)
  3397.   ultrastor                    Busmastering DMA                 Y
  3398.   53c7,8xx                     Busmastering DMA               1s/1s                255s        Y
  3399.   (NCR53c810)
  3400.  
  3401.  
  3402.   Notes :
  3403.  
  3404.   1. drivers flagged with an '*' are not included with the distribution
  3405.      kernel, and binary boot images may be unavailable.
  3406.  
  3407.   2. numbers suffixed with an 's' are arbitrary limits set in software
  3408.      which may be changed with a compile time define.
  3409.  
  3410.   3. hardware limits are indicated by an 'h' suffix, and may differ from
  3411.      the software limits currently imposed by the Linux drivers.
  3412.  
  3413.   4. unsuffixed numbers may indicate either hard or soft limits.
  3414.  
  3415.  
  3416.   9.8.  Board comparison
  3417.  
  3418.  
  3419.  
  3420.   Board                Driver       Bus      Price     Notes
  3421.   Adaptec AIC-6260     aha152x      ISA                chip, not board
  3422.   Adaptec AIC-6360     aha152x      VLB                chip, not board
  3423.                                                        (Used in most
  3424.                                                        VESA/ISA multi-IO
  3425.                                                        boards with SCSI,
  3426.                                                        Zenon mainboards)
  3427.   Adaptec 1520         aha152x      ISA
  3428.   Adaptec 1522         aha152x      ISA      $80       1520 w/FDC
  3429.   Adaptec 1510         aha152x      ISA                1520 w/out boot ROM,
  3430.                                                        won't autoprobe.
  3431.   Adaptec 1540C        aha1542      ISA
  3432.  
  3433.   Adaptec 1542C        aha1542      ISA                1540C w/FDC
  3434.   Adaptec 1540CF       aha1542      ISA                FAST SCSI-II
  3435.   Adaptec 1542CF       aha1542      ISA      $200      1540CF w/FDC
  3436.   Adaptec 1740         aha1740      EISA               discontinued
  3437.   Adaptec 1742         aha1740      EISA               discontinued, 1740
  3438.                                                        w/FDC
  3439.   Adaptec 2740         aha274x      EISA
  3440.   Adaptec 2742         aha274x      EISA               w/FDC
  3441.   Adaptec 2840         aha274x      VLB
  3442.   Adaptec 2842         aha274x      VLB                w/FDC
  3443.   Always IN2000        in2000       ISA
  3444.   Buslogic 445S        aha1542,     VLB      $250      FAST SCSI-II, active
  3445.   buslogic                                             termination, w/FDC
  3446.   Buslogic 747S        aha1542      EISA               FAST SCSI-II, active
  3447.   buslogic                                             termination, w/FDC
  3448.   Buslogic 946S        buslogic     PCI                FAST SCSI-II, active
  3449.                                                        termination.
  3450.   DPT PM2011           eata dma     ISA                FAST SCSI-II
  3451.   DPT PM2012A          eata dma     EISA               FAST SCSI-II
  3452.   DPT PM2012B          eata dma     EISA               FAST SCSI-II
  3453.   DPT PM2021           eata dma     ISA      $245      FAST SCSI-II
  3454.   DPT PM2022           eata dma     EISA     $449      FAST SCSI-II
  3455.                                                        active termination
  3456.   DPT PM2024           eata dma     PCI      $395      FAST SCSI-II
  3457.                                                        active termination
  3458.   DPT PM2122           eata dma     EISA     $595      FAST SCSI-II
  3459.                                                        active termination
  3460.   DPT PM2124           eata dma     PCI      $595      FAST SCSI-II
  3461.                                                        active termination
  3462.   DPT PM2322           eata dma     EISA               FAST SCSI-II
  3463.                                                        active termination
  3464.   DPT PM3021           eata dma     ISA      $1595     FAST SCSI-II
  3465.                                                        multichannel
  3466.                                                        raid/simm sockets
  3467.                                                        active termination
  3468.   DPT PM3122           eata dma     EISA     $1795     FAST SCSI-II
  3469.                                                        multichannel/raid
  3470.                                                        active termination
  3471.  
  3472.  
  3473.  
  3474.  
  3475.   DPT PM3222                  eata dma      EISA     $1795    FAST SCSI-II
  3476.                                                               multichannel
  3477.                                                               raid/simm sockets
  3478.                                                               active termination
  3479.   DPT PM3224                  eata dma      PCI      $1995    FAST SCSI-II
  3480.                                                               multichannel
  3481.                                                               raid/simm sockets
  3482.                                                               active termination
  3483.   DPT DTC 3                   aha1542       EISA              Although it should work,
  3484.                                                               due to documentation
  3485.                                                               release polcies, DTC
  3486.                                                               hardware is unsupported
  3487.   DTC 3292                    aha1542       EISA              3290 w/FDC
  3488.   DTC 3292                    aha1542       EISA              3290 w/FDC
  3489.   Future Domain 1680          fdomain       ISA               FDC
  3490.   Future Domain 3260          fdomain       PCI
  3491.   NCR53c810 (boards sold      53c7,8xx     PCI       $70     +chip, not board. Boards
  3492.   by FIC, Chaintech,                                          (board) don't include
  3493.   Nextor, Gigabyte, etc.                                      BIOS, although most
  3494.   Mainboards with chip by                                     non-NCR equipped main
  3495.   AMI, ASUS, J-Bond,                                          boards have the SDMS
  3496.   etc. Common in DEC                                          BIOS
  3497.   PCI systems)
  3498.  
  3499.   NCR53c815 (                 53c7,8xx      PCI      $115     NCR53c810 plus
  3500.   Intel PCISCSIKIT,                                           bios
  3501.   NCR8150S, etc)
  3502.   NCR53c825                   53c7,8xx      PCI               Wide variant of
  3503.                                                               NCR53c815. Note that
  3504.                                                               the current Linux
  3505.                                                               driver does not
  3506.                                                               negotiate for wide
  3507.                                                               transfers.
  3508.   Pro Audio Spectrum 16       pas16         ISA               Sound board w/SCSI
  3509.   Seagate ST01                seagate       ISA      $20      IOS only works with
  3510.                                                               some drives
  3511.   Seagate ST02                seagate       ISA      $40      ST01 w/FDC
  3512.   Sound Blaster 16 SCSI       aha152x       ISA               Sound board w/SCSI
  3513.   Western Digital 7000        wd7000        ISA               w/FDC
  3514.   Trantor T128                t128          ISA
  3515.   Trantor T128F               t128          ISA               T128 w/FDC and
  3516.                                                               support for high IRQs
  3517.   Trantor T130B               g NCR5380    ISA
  3518.   Ultrastor 14F               ultrastor    ISA                w/FDC
  3519.   Ultrastor 24F               ultrastor    EISA               w/FDC
  3520.   Ultrastor 34F               ultrastor    VLB
  3521.  
  3522.  
  3523.   Notes:
  3524.  
  3525.   1. Trantor was recently purchased by Adaptec, and some products are
  3526.      being sold under the Adaptec name.
  3527.  
  3528.   2. Ultrastor recently filed for Chapter 11 Bankruptcy, so technical
  3529.      support is non-existant at this time.
  3530.  
  3531.   3. Various Buslogic boards other than the 545S, 445S, 747S, and 946S
  3532.      _should_ work,  although to my knowledge have not been tried.
  3533.  
  3534.   4. The $70 price for the busmastering NCR53c810 boards is not a typo,
  3535.      includes the standard ASPI/CAM driver package for DOS, OS/2 and
  3536.      Windows (32 bit access), and other drivers are available for free
  3537.      download.
  3538.  
  3539.      If you can't find one at that price, try Technoland at
  3540.      1-800-292-4500 or 1-408-992-0888 if you live in California,
  3541.      InteliSys at (703)385-0347, Superpower 1 (800) 736-0007, SW
  3542.      (swt@netcom.com) 214-907-0871 fax 214-907-9339
  3543.  
  3544.      Insight Electronics at 1-609-985-5556 stocks NCR8150S '815 boards
  3545.      for $115 if you don't have a NCR SDMS BIOS in your main ROM.
  3546.  
  3547.   5. Adaptec's recent SCSI chips show an unusual sensitivity to cabling
  3548.      and termination problems. For this reason, I cannot recommend the
  3549.      Adaptec 154x C and CF revisions or the 2xxx series.
  3550.  
  3551.      Note that the reliability problems do not apply to the older 154x B
  3552.      revision boards, 174x A revision boards, or to my knowledge
  3553.      AIC-6360/AIC-6260 based boards.
  3554.  
  3555.      Also, the quality of their technical support has slipped markedly,
  3556.      with long delays becoming more common, and their employees being
  3557.      ignorant (suggesting there were non-disclosure policies affecting
  3558.      certain literature when there were none), and hostile (ie, refusing
  3559.      to pass questions on to some one else when they couldn't answer
  3560.      them).
  3561.  
  3562.      If users desire handholding, or wish to make a political statement,
  3563.      they should take this point into consideration.  Otherwise, the
  3564.      Adaptec 152x/1510 are nicer than the other ISA boards in the same
  3565.      price range, and there are some excellent deals on used and surplus
  3566.      154x B revision boards and 1742 boards which IMHO outweigh the
  3567.      support problems.
  3568.  
  3569.   6. All given prices for the DPT controllers are official list prices.
  3570.      Street prices should be considerably lower.  All boards can be
  3571.      upgraded with chache and raid modules, most of the boards are also
  3572.      available in Wide and/or Differential versions.
  3573.  
  3574.  
  3575.   9.9.  Summary
  3576.  
  3577.   Most ISA, EISA, and VESA users will probably be served best by a
  3578.   Buslogic board, due to its performance, features such as active
  3579.   termination, and Adaptec 1540 compatability.  There are a number of
  3580.   models available with EISA, ISA, PCI, and VESA local bus interfaces,
  3581.   in single ended and differential, and 8/16 bit SCSI bus widths.
  3582.  
  3583.   People with PCI systems should consider NCR53c810 based boards.  These
  3584.   are bus mastering SCSI controllers, available in Q1 for about $70 (ie,
  3585.   cheaper than the Adaptec 1520) with larger quantities being cheaper
  3586.   (I've seen $62 in Q20).  In addition to being the cheapest PCI SCSI
  3587.   boards, the NCR boards were also benchmarked as faster than the
  3588.   Adaptec 2940 and Buslogic BT-946, and demonstrate excellent
  3589.   performance under Linux (up to 4M/sec through the file system )
  3590.   inspite of the performance optomizations being disabled in the current
  3591.   driver.  The disadvantages of these boards versus the Buslogics are
  3592.   that they aren't Adaptec 1540 compatable, don't come with active
  3593.   termination, and to my knowledge are only supported under DOS+Windows,
  3594.   OS/2, Windows NT, SCO, NeXTstep, and Free BSD.  Currently, the Linux
  3595.   driver appears quite stable on most systems (We've moved several
  3596.   gigabytes of data to NCR based devices with no problems), surprisingly
  3597.   fast (I've seen 4M/sec through the filesystem) and will eventually
  3598.   become more featureful.  On the downside, the current Linux driver
  3599.   implementation doesn't support disconnect/reconnect, so you will be
  3600.   unable to access your SCSI disks if rewinding,retensioning,etc. SCSI
  3601.   tapes at the same time.
  3602.  
  3603.   People wanting non-PCI SCSI on a limited budget will probably be
  3604.   happiest finding a surplus or used Adaptec 154x B revision or 174x A
  3605.   revision, or an Adaptec 1520 clone of some sort (about $80) if they
  3606.   want new hardware.  These boards offer reasonable throughput and
  3607.   interactive performance at a modest price.
  3608.